0
点赞
收藏
分享

微信扫一扫

utils

人间四月天i 2022-02-24 阅读 86
html5

<template>
  <div class="freePop">
    <el-dialog
      title
      :visible.sync="showFreeTrial"
      width="870px"
      custom-class="showFreeTrialPop"
    >
      <img
        src="@/assets/freeTrial/showFreeTrialPop.png"
        class="showFreeTrialPopImg absolute"
        alt
        srcset
      />

      <img
        src="@/assets/close.png"
        @click="closePop"
        class="absolute closeImg"
        alt
        srcset
      />

      <!-- 提交资料 -->
      <div class="showFreeTrialInfo relative" v-if="!isTrialSuccess">
        <el-row :gutter="20">
          <el-col :span="12" :offset="8">
            <div
              class="showFreeTrialInfoTitle flex justify-between align-center"
            >
              <div class="showFreeTrialInfoTitleLeft font-size-24">
                免费体验
              </div>
              <div
                class="
                  showFreeTrialInfoTitleRight
                  font-size-16
                  flex
                  align-center
                "
              >
                {{ serviceTel }}
                <img
                  class="showFreeTrialInfoTitleRightImg"
                  src="@/assets/freeTrial/callPhone.png"
                  alt
                  srcset
                />
              </div>
            </div>
          </el-col>
          <el-col :span="14" :offset="8" class="showFreeTrialInputAll">
            <div class="showFreeTrialInputs flex align-center">
              <div class="showFreeTrialInputsLabel font-size-16">姓名</div>
              <div class="showFreeTrialInputsLine"></div>
              <input
                v-model="name"
                placeholder="请输入您的联系姓名"
                class="showFreeTrialInput font-size-16"
              />
            </div>

            <div class="showFreeTrialInputs flex align-center">
              <div class="showFreeTrialInputsLabel font-size-16">手机号</div>
              <div class="showFreeTrialInputsLine"></div>
              <input
                v-model="mobile"
                placeholder="请输入您的手机号"
                maxlength="11"
                class="showFreeTrialInput font-size-16"
              />
            </div>

            <div class="showFreeTrialInputs flex align-center justify-between">
              <div class="flex align-center">
                <div class="showFreeTrialInputsLabel font-size-16">验证码</div>
                <div class="showFreeTrialInputsLine"></div>
                <input
                  v-model="code"
                  placeholder="请输入收到的验证码"
                  class="showFreeTrialInput font-size-16"
                  maxlength="6"
                  placeholder-class="showFreeTrialInputPla"
                />
              </div>

              <div class="getCode font-size-16" @click="getUserCode">
                {{ codeText }}
              </div>
            </div>

            <div
              class="
                showFreeTrialInputs
                textarea-ipt
                flex
                align-center
                demandInput
              "
            >
              <el-input
                type="textarea"
                placeholder="简单描述您的需求(选填)"
                v-model="demand"
                maxlength="150"
                show-word-limit
                class="font-size-16 demandInputs"
                :rows="3"
              ></el-input>
            </div>
            <div class="agreement-checked">
              <el-checkbox v-model="promptContent" @click="select(event)"
                >确定申请系统体验并提供个人手机号,平台会对您所提供的信息安全保密</el-checkbox
              >
            </div>

            <div
              class="
                showFreeTrialInputs
                flex
                align-center
                demandInput
                justify-center
                experience
                font-size-16
              "
              @click="getSaveDemand"
            >
              马上体验
            </div>
          </el-col>
        </el-row>
      </div>
      <!-- 提交成功 -->
      <div
        class="showFreeTrialInfo relative"
        :class="isTrialSuccess ? 'isTrialSuccessImg' : ''"
        v-else
      >
        <el-row :gutter="20">
          <el-col :span="6" :offset="18">
            <div
              class="showFreeTrialInfoTitleRight font-size-16 flex align-center"
            >
              <img
                class="showFreeTrialInfoTitleRightImg isTrialSuccessImgs"
                src="@/assets/freeTrial/callPhone.png"
                alt
                srcset
              />
              0755 - 66635068
            </div>
          </el-col>

          <el-col :span="12" :offset="8" class="text-align-center">
            <div class="text-align-center trialSuccessImgs">
              <img
                class="trialSuccessImg"
                src="@/assets/freeTrial/trialSuccess.png"
                alt
              />
            </div>
            <div class="trialSuccess font-size-24">
              成功提交,感谢您的咨询!
            </div>
            <div class="trialSuccessInfo font-size-14">
              请留意电话来电,我们的客服将与您联系
            </div>
            <div class="trialSuccessBtn text-align-center" @click="closePop">
              好的
            </div>
          </el-col>
        </el-row>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { getCode, trial, phone, read } from "@/serve/api/user";

export default {
  name: "freePop",
  data() {
    return {
      showFreeTrial: false,
      promptContent: false,
      name: "", //姓名
      mobile: "", //手机号码
      code: "", //验证码
      demand: "", //需求
      codeText: "获取验证码",
      isTrialSuccess: false,
      serviceTel: "",
    };
  },
  created() {
    phone({})
      .then((res) => {
        this.serviceTel = res.data.data.serviceTel;
      })
      .catch((err) => {});
  },
  methods: {
    //免费体验按钮
    getExperience() {
      this.showFreeTrial = true;
    },
    //获取验证码
    getUserCode() {
      if (this.codeText !== "获取验证码") return;
      if (!this.mobile) {
        this.$message.closeAll();
        this.$message.error("请填写手机号~", "error");
        return;
      }
      var phone_rules =
        /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
      if (!phone_rules.test(this.mobile)) {
        this.$message.closeAll();
        this.$message.error("输入的手机号不符合规则!", "error");
        return;
      }

      getCode({ type: 4, mobile: this.mobile }).then((res) => {
        //倒计时
        this.validateBtn();
      });
    },
    //验证码倒计时
    validateBtn() {
      //倒计时
      let time = 60;
      let timer = setInterval(() => {
        if (time == 0) {
          clearInterval(timer);
          this.disabled = false;
          this.codeText = "获取验证码";
        } else {
          this.codeText = time + "秒后重试";
          this.disabled = true;
          time--;
        }
      }, 1000);
    },
    select(e) {
      this.promptContent = e.target.checked;
    },

    //保存表单
    getSaveDemand() {
      if (!this.name) {
        this.$message.closeAll();
        this.$message.error("请输入姓名~", "error");
        return;
      }
      if (!this.mobile) {
        this.$message.closeAll();
        this.$message.error("请填写手机号~", "error");
        return;
      }
      var phone_rules =
        /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
      if (!phone_rules.test(this.mobile)) {
        this.$message.closeAll();
        this.$message.error("输入的手机号不符合规则!", "error");
        return;
      }
      if (!this.code || this.code.length != 6) {
        this.$message.closeAll();
        this.$message.error("请输入验证码或验证码有误~", "error");
        return;
      }

      if (this.promptContent == false) {
        this.$message({
          message: "请阅读并勾选同意相关协议",
          type: "error",
        });
        return;
      }
      // read
      let params = {
        accessType: 1,
        code: this.code,
        demand: this.demand,
        name: this.name,
        phone: this.mobile,
      };
      let deviceDta = {
        mobile: this.mobile,
        type: this.promptContent == true ? 15 : "",
      };
      read(deviceDta)
        .then((res) => {
          this.promptContent = false;
        })
        .catch((err) => {});
      trial(params)
        .then((res) => {
          this.isTrialSuccess = true;
          this.code = "";
          this.demand = "";
          this.name = "";
          this.phone = "";
        })
        .catch((err) => {});
    },
    //显示成功弹窗
    showSuccess() {
      this.isTrialSuccess = true;
      this.showFreeTrial = true;
    },
    //关闭弹窗
    closePop() {
      this.showFreeTrial = false;
      this.isTrialSuccess = false;
    },
  },
};
</script>
<style lang="scss" scoped>
.showFreeTrialPop {
  border-radius: 0.08rem !important;
}
.showFreeTrialPopImg {
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  z-index: 8;
}
.showFreeTrialInfo {
  z-index: 9;
  padding-top: 0.53rem;
  padding-bottom: 0.53rem;
}
.showFreeTrialInfoTitle {
  color: #0064ff;
}
.showFreeTrialInfoTitleRightImg {
  width: 0.2rem;
  height: 0.2rem;
  margin-left: 0.08rem;
}
.isTrialSuccessImgs {
  margin-left: 0;
  margin-right: 0.08rem;
}
// 协议勾选
.agreement-checked {
  margin-top: 0.14rem;
  /deep/.el-checkbox {
    font-size: 0.12rem !important;
    font-family: PingFangSC-Regular, PingFang SC;
    font-weight: 400;
    color: #a6abc3;
    display: flex;
    align-items: center;
    justify-content: flex-start;
  }
}

// 输入框
.showFreeTrialInputAll {
  margin-top: 0.12rem;
}
.showFreeTrialInputs {
  height: 46px;
  background: rgba(255, 255, 255, 1);
  border-radius: 0.04rem;
  border: 0.01rem solid rgba(215, 231, 255, 1);
  padding: 0 0.12rem;
  margin-top: 0.12rem;
}
.textarea-ipt {
  height: auto;
}
// 需求输入框
.demandInput {
  border-radius: 0.04rem;
  border: none;
  padding: 0;
  margin-top: 0.24rem;
}
.demandInputs {
  color: #a6abc3;
}
.showFreeTrialInputsLabel {
  color: #3a3c4a;
  width: 0.84rem;
}
.showFreeTrialInputsLine {
  width: 0.01rem;
  height: 0.24rem;
  background: rgba(215, 231, 255, 1);
}
.showFreeTrialInput {
  border: none;
  margin-left: 0.12rem;
  outline: 0;
}
// 获取验证码
.getCode {
  color: #444;
  cursor: pointer;
}
.experience {
  height: 42px;
  background: rgba(0, 100, 255, 1);
  border-radius: 0.04rem;
  cursor: pointer;
  color: #ffffff;
}
// 提交成功
.isTrialSuccessImg {
  padding-top: 0.3rem !important;
  padding-bottom: 1.13rem !important;
}
.showFreeTrialInfoTitleRight {
  color: #0064ff;
}
// 提交成功图片
.trialSuccessImgs {
  height: 0.7rem;
}
.trialSuccessImg {
  width: 0.7rem;
  height: 0.7rem;
}
.trialSuccess {
  margin-top: 0.33rem;
  color: #3a3c4a;
}
.trialSuccessInfo {
  margin-top: 0.19rem;
  color: #4e5061;
}
.trialSuccessBtn {
  width: 2.4rem;
  height: 0.42rem;
  line-height: 0.42rem;
  background: rgba(0, 100, 255, 1);
  border-radius: 0.04rem;
  color: #fff;
  margin: 0.48rem auto 0 auto;
  cursor: pointer;
}
.closeImg {
  top: -0.31rem;
  width: 0.14rem;
  height: 0.14rem;
  right: 0.17rem;
  cursor: pointer;
}
</style>

举报

相关推荐

0 条评论