{"version":3,"file":"index.be4af66b.mjs","sources":["../../../../node_modules/@element-plus/icons-vue/dist/es/iphone.mjs","../../../../pages/resetpwd/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n  name: \"Iphone\"\n});\nconst _hoisted_1 = {\n  viewBox: \"0 0 1024 1024\",\n  xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n  fill: \"currentColor\",\n  d: \"M224 768v96.064a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V768H224zm0-64h576V160a64 64 0 0 0-64-64H288a64 64 0 0 0-64 64v544zm32 288a96 96 0 0 1-96-96V128a96 96 0 0 1 96-96h512a96 96 0 0 1 96 96v768a96 96 0 0 1-96 96H256zm304-144a48 48 0 1 1-96 0 48 48 0 0 1 96 0z\"\n}, null, -1);\nconst _hoisted_3 = [\n  _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar iphone = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { iphone as default };\n","<template>\n  <NuxtLayout name=\"activity\">\n    <div class=\"page-reset w\">\n      <div class=\"success_tips\" v-if=\"steps === 2\">\n        <img src=\"~/assets/images/success.png\" alt=\"\" />\n        <div class=\"desc\">密码重置成功</div>\n        <p>{{ downtime }} 秒后自动跳转至网站首页</p>\n        <el-button class=\"btn\" type=\"primary\" @click=\"toHome\"\n          >立即前往</el-button\n        >\n      </div>\n      <div class=\"form_container\" v-else>\n        <div class=\"head_top\">\n          <span class=\"title\">重置密码</span>\n          <NuxtLink to=\"/login\">返回账号登录</NuxtLink>\n        </div>\n        <el-steps class=\"steps\" :active=\"steps\" align-center>\n          <el-step title=\"验证手机号码\">\n          </el-step>\n          <el-step title=\"设置新密码\">\n          </el-step>\n          <el-step title=\"密码重置成功\">\n          </el-step>\n        </el-steps>\n        <div v-show=\"steps === 0\">\n          <el-form\n            ref=\"formRef\"\n            :model=\"form\"\n            :rules=\"rules\"\n            size=\"large\"\n            class=\"form\"\n          >\n            <el-form-item prop=\"telCode\">\n              <client-only>\n                <el-select v-model=\"form.telCode\" filterable placeholder=\"请选择\">\n                  <template #prefix>\n                    <span>国家/地区</span>\n                  </template>\n                  <el-option\n                    v-for=\"item in opts.TelCodeEnum\"\n                    :key=\"item.code\"\n                    :label=\"item.desc\"\n                    :value=\"item.code\"\n                  >\n                    <span style=\"float: left\">{{ item.standardDesc }}</span>\n                    <span\n                      style=\"\n                        float: right;\n                        color: var(--el-text-color-secondary);\n                        font-size: 13px;\n                      \"\n                      >{{ item.codeDesc }}</span\n                    >\n                  </el-option>\n                </el-select>\n              </client-only>\n            </el-form-item>\n            <el-form-item prop=\"phone\">\n              <el-input v-model=\"form.phone\" placeholder=\"请输入手机号\">\n                <template #prefix>\n                  <el-icon class=\"el-input__icon\"><iphone /></el-icon>\n                </template>\n              </el-input>\n            </el-form-item>\n            <el-form-item prop=\"verificationCode\">\n              <el-input\n                v-model=\"form.verificationCode\"\n                placeholder=\"请输入验证码\"\n              >\n                <template #prefix>\n                  <span class=\"iconfont icon-icon_Code\"></span>\n                </template>\n                <template #suffix>\n                  <el-button type=\"text\" @click=\"getCode\">{{ txt }}</el-button>\n                </template>\n              </el-input>\n            </el-form-item>\n          </el-form>\n          <el-button class=\"submit\" type=\"primary\" @click=\"next(formRef)\"\n            >下一步</el-button\n          >\n        </div>\n        <div v-show=\"steps === 1\">\n          <el-form\n            ref=\"pwdFormRef\"\n            :model=\"pwdForm\"\n            :rules=\"pwdRules\"\n            size=\"large\"\n            class=\"form\"\n          >\n            <el-form-item prop=\"loginPwd\">\n              <el-input\n                type=\"password\"\n                show-password\n                v-model=\"pwdForm.loginPwd\"\n                placeholder=\"密码由6-20位大写和小写字母和数字组成\"\n              >\n              </el-input>\n            </el-form-item>\n            <el-form-item prop=\"confirmPwd\">\n              <el-input\n                type=\"password\"\n                show-password\n                v-model=\"pwdForm.confirmPwd\"\n                placeholder=\"请再次输入密码\"\n              >\n              </el-input>\n            </el-form-item>\n          </el-form>\n          <el-button v-if=\"isReturn\" class=\"submit\" type=\"primary\" @click=\"prev()\"\n            >返回</el-button\n          >\n          <el-button v-else class=\"submit\" type=\"primary\" @click=\"submitForm(pwdFormRef)\"\n            >确认</el-button\n          >\n        </div>\n      </div>\n    </div>\n  </NuxtLayout>\n</template>\n<script setup>\nimport { ElMessage } from \"element-plus\";\nimport { Iphone, Lock } from \"@element-plus/icons-vue\";\nimport { useUserStore } from \"~/stores/user\";\nimport { getMsg, userResetLoginPwd } from \"@/api/user\";\nimport cookie from \"@/utils/cookies\";\nlet cookieData = cookie.getShop()\nuseHead({\n  title: '忘记密码-' + cookieData.shopName\n})\n\nconst store = useUserStore();\nconst { getEnumList, setToken, getUserView, getRsaCode } = store;\nconst router = useRouter();\n\nconst steps = ref(0);\nlet opts = reactive({\n  TelCodeEnum: \"\",\n});\n\nconst formRef = ref(\"\");\nlet form = reactive({\n  telCode: \"86\",\n  phone: \"\",\n  verificationCode: \"\",\n});\nconst rules = reactive({\n  telCode: [\n    {\n      required: true,\n      message: \"请选择国家/地区\",\n      trigger: \"change\",\n    },\n  ],\n  phone: [\n    {\n      required: true,\n      message: \"请输入手机号\",\n      trigger: \"blur\",\n    },\n  ],\n  verificationCode: [\n    {\n      required: true,\n      message: \"请输入验证码\",\n      trigger: \"blur\",\n    },\n  ]\n});\n\nconst pwdFormRef = ref(\"\");\nlet pwdForm = reactive({\n  loginPwd: \"\",\n  confirmPwd: \"\",\n});\nconst checkPwd = (rule, value, callback) => {\n  var passwordreg =\n    /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$/;\n  if (!value) {\n    return callback(new Error(\"请输入新的登录密码\"));\n  }\n  if (!passwordreg.test(value) || value.length > 20 || value.length < 6) {\n    callback(new Error(\"密码必须由6-20位大写和小写字母和数字组成\"));\n  } else {\n    callback();\n  }\n};\nconst checkConfirmPwd = (rule, value, callback) => {\n  if (!value) {\n    callback(\"请再次输入密码\");\n  } else if (value !== pwdForm.loginPwd) {\n    callback(\"确认密码与新的登录密码不一致\");\n  } else {\n    callback();\n  }\n};\nconst pwdRules = reactive({\n  loginPwd: [\n    {\n      validator: checkPwd,\n      trigger: \"blur\",\n    },\n  ],\n  confirmPwd: [\n    {\n      validator: checkConfirmPwd,\n      trigger: \"blur\",\n    },\n  ],\n});\n\nonMounted(() => {\n  getEnumList(\"TelCodeEnum\", \"arr\").then((res) => {\n    opts.TelCodeEnum = res;\n  });\n});\n\nconst txt = ref(\"获取验证码\");\nconst disabled = ref(false);\nconst timeOut = () => {\n  let num = 60;\n  disabled.value = true;\n  txt.value = num;\n  let nt = setInterval(() => {\n    if (num <= 0) {\n      clearInterval(nt);\n      disabled.value = false;\n      txt.value = \"重新获取\";\n    } else {\n      num--;\n      txt.value = num + \"s\";\n    }\n  }, 1000);\n};\n\nconst getCode = () => {\n  if (disabled.value) return;\n  if (!/^1\\d{10,10}$/.test(parseInt(form.phone))) {\n    ElMessage.error(\"请输入正确的手机号\");\n    return false;\n  }\n  getMsg({\n    phone: form.phone,\n    telCode: form.telCode,\n    verificationCodeType: 3,\n  }).then((res) => {\n    timeOut();\n  });\n};\n\n\nconst prev = () => {\n  if (steps.value === 1) {\n    steps.value = 0\n  } else {\n    return false\n  }\n}\n\nconst next = (formEl) => {\n  if (!formEl) return;\n  formEl.validate((valid) => {\n    if (valid) {\n      steps.value = 1\n    }\n  })\n}\n\nlet isReturn = ref(false)\nlet downtime = ref(5);\nconst submitForm = (formEl) => {\n  if (!formEl) return;\n  formEl.validate(async (valid) => {\n    if (valid) {\n      pwdForm.loginEncryption = await getRsaCode(pwdForm.loginPwd)\n      pwdForm.loginPwd = undefined\n      pwdForm.confirmPwdEncryption = await getRsaCode(pwdForm.confirmPwd)\n      pwdForm.confirmPwd = undefined\n      userResetLoginPwd({\n        ...form,\n        ...pwdForm,\n      }).then((res) => {\n        if (res) {\n          steps.value = 2;\n          const timer = setInterval(() => {\n            downtime.value -= 1;\n            if (downtime.value < 1) {\n              clearInterval(timer);\n              toHome();\n            }\n          }, 1000);\n        }\n      }).catch(err => {\n        isReturn.value = true\n      });\n    } else {\n      // console.log(\"error submit!\");\n      return false;\n    }\n  });\n};\nconst toHome = () => {\n  router.push({ path: \"/\" });\n};\n</script>\n<style lang=\"scss\">\n.page-reset {\n  .el-step__title {\n    font-size: 12px;\n    font-weight: 400;\n  }\n  .el-step__icon.is-text {\n    .el-step__icon-inner {\n      //display: none;\n    }\n    .dot {\n      width: 14px;\n      height: 14px;\n      background: #EBEEF5;\n      border-radius: 50%;\n    }\n  }\n  .el-step__line {\n    background: #EBEEF5;\n  }\n  .is-process, .is-finish {\n    .el-step__icon.is-text .dot {\n      background: #2256F6;\n    }\n    .el-step__line {\n      background: #2256F6;\n    }\n\n  }\n  .el-step.is-center .el-step__line {\n    left: 0;\n    right: 0;\n  }\n  .el-step:last-of-type .el-step__line {\n    display: block;\n    right: 50%;\n  }\n  .el-steps .el-step:first-child .el-step__line {\n    left: 50%;\n  }\n  .el-select {\n    width: 100%;\n    .el-input__inner {\n      text-align: right;\n    }\n  }\n  .el-input__icon {\n    color: #333;\n  }\n}\n</style>\n<style lang=\"scss\" scoped>\n.page-reset {\n  height: calc(100vh - 66px - 70px);\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  .form_container {\n    width: 680px;\n    height: 460px;\n    border-radius: 10px;\n    background: #fff;\n    padding: 30px;\n    position: relative;\n    text-align: center;\n    .head_top {\n      display: flex;\n      justify-content: space-between;\n      .title {\n        font-size: 16px;\n        font-weight: 700;\n      }\n    }\n    .steps {\n      margin-top: 30px;\n    }\n    .form {\n      margin: 30px auto 0;\n      width: 380px;\n    }\n    span {\n      color: #333;\n    }\n    .submit {\n      width: 380px;\n      height: 50px;\n    }\n  }\n  .success_tips {\n    width: 680px;\n    height: 460px;\n    border-radius: 10px;\n    background: #fff;\n    padding: 70px 0;\n    text-align: center;\n    img {\n      margin: auto;\n    }\n    .desc {\n      font-size: 16px;\n      margin-top: 20px;\n    }\n    p {\n      color: #999;\n      margin-top: 10px;\n    }\n    .btn {\n      width: 380px;\n      height: 50px;\n      margin-top: 50px;\n      font-size: 14px;\n    }\n  }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_3","fill","d","iphone","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","cookieData","cookie","getShop","useHead","title","shopName","store","useUserStore","getEnumList","setToken","getUserView","getRsaCode","router","useRouter","steps","ref","opts","reactive","TelCodeEnum","formRef","form","telCode","phone","verificationCode","rules","required","message","trigger","pwdFormRef","pwdForm","loginPwd","confirmPwd","pwdRules","validator","rule","value","callback","Error","test","length","onMounted","then","res","txt","disabled","getCode","parseInt","getMsg","verificationCodeType","num","nt","setInterval","clearInterval","ElMessage","error","isReturn","downtime","toHome","push","path","formEl","validate","valid","async","loginEncryption","confirmPwdEncryption","userResetLoginPwd","timer","catch","err"],"mappings":"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"}