forget.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. var content = {
  2. 'cn':{
  3. item1:'忘记密码',
  4. btn:'确定',
  5. item2:'密码格式错误',
  6. item3:'请输入新密码',
  7. item4:'请确认新密码',
  8. item5:"两次输入密码不一致!",
  9. success:'成功',
  10. token:'链接错误,请检查链接',
  11. st1:"使用8到15个字符",
  12. st2:"同时使用大写和小写字母",
  13. st3:"使用数字和英文字母的组合"
  14. },
  15. 'en':{
  16. item1:'Forget the password',
  17. btn:'Confirm',
  18. item2:'Wrong password format',
  19. item3:'Please enter a new password',
  20. item4:'Please confirm the new password',
  21. item5:"The two input passwords are inconsistent!",
  22. success:'success',
  23. token:'Link error, please check link!',
  24. st1:"Must be between 8 to 15 characters",
  25. st2:"Contain both uppercase and lowercase letter",
  26. st3:"Use a combination of numbers and letters"
  27. }
  28. };
  29. let config = {
  30. Pattern: {
  31. Password: /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?!.*([~!@&%$^\\(\\)#_]).*\\1.*\\1.*\\1)[A-Za-z0-9~!@&%$^\\(\\)#_]{8,16}$/,
  32. }
  33. };
  34. let vm = new Vue({
  35. el: "#forget",
  36. data(){
  37. return{
  38. imgUrl:'',
  39. ho:'',
  40. //多语言
  41. langList: {
  42. en: "ENGLISH",
  43. cn: "中文简体"
  44. },
  45. language: "cn",
  46. lang:{},
  47. params: {
  48. password: "",
  49. token:'',
  50. },
  51. rules: {
  52. password: [
  53. {
  54. validator: (rule, value, callback) => {
  55. if (config.Pattern.Password.test(value)) {
  56. callback();
  57. } else {
  58. callback(new Error(this.lang.item2));
  59. }
  60. },
  61. trigger: "blur"
  62. }
  63. ],
  64. password1: [
  65. {
  66. validator: (rule, value, callback) => {
  67. if (value === '') {
  68. callback(new Error(this.lang.item4));
  69. } else if (value !== this.params.password) {
  70. callback(new Error(this.lang.item5));
  71. } else {
  72. callback();
  73. }
  74. },
  75. trigger: "blur"
  76. }
  77. ]
  78. }
  79. }
  80. },
  81. computed: {
  82. rule1: function () {
  83. if (!this.params.password) {
  84. return false;
  85. }
  86. return /^.{8,16}$/.test(this.params.password);
  87. },
  88. rule2: function () {
  89. return /^(?=.*?[a-z])(?=.*?[A-Z]).*$/.test(this.params.password);
  90. },
  91. rule3: function () {
  92. return /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?!.*([~!@&%$^\\(\\)#_]).*\\1.*\\1)[A-Za-z0-9~!@&%$^\\(\\)#_]{8,16}$/.test(
  93. this.params.password
  94. );
  95. },
  96. AccessToken(){
  97. return{
  98. 'Access-Token': window.location.search.split('?token=')[1]
  99. }
  100. }
  101. },
  102. methods: {
  103. // 语言切换函数
  104. chooseLang (key) {
  105. this.lang = content[key];
  106. this.language = key;
  107. if (!this.params.token) {
  108. this.$message.error(this.lang.token);
  109. }
  110. },
  111. // 发送
  112. send: async function () {
  113. this.$refs["params"].validate(async valid => {
  114. if (valid) {
  115. axios.defaults.headers.common['Access-Token'] = window.location.search.split('?token=')[1];
  116. axios.post(this.imgUrl+'/custom/update/email/password', {
  117. ...this.params
  118. //参数
  119. }).then(res => {//请求成功后的处理函数
  120. if (res.data.code == 200) {
  121. this.$message({
  122. message: this.lang.success,
  123. type: 'success'
  124. });
  125. setTimeout(() => {
  126. window.location.href = this.imgUrl
  127. }, 2000);
  128. } else {
  129. this.$message.error(res.data.msg);
  130. }
  131. }).catch(err => { //请求失败后的处理函数
  132. })
  133. } else {
  134. return false;
  135. }
  136. });
  137. },
  138. },
  139. mounted() {
  140. this.params.token = window.location.search.split('?token=')[1];
  141. let hostParts = window.location.host.split('.');
  142. let tld = hostParts.slice(2).join('.') || 'com';
  143. this.ho = window.location.host.split('.')[1];
  144. this.imgUrl = 'https://secure.' + this.ho + '.' + tld
  145. var jsSrc =(navigator.language || navigator.browserLanguage).toLowerCase();
  146. if(jsSrc.indexOf('zh') >= 0){
  147. this.language = 'cn'
  148. this.lang = content['cn'];
  149. }else{
  150. this.language = 'en'
  151. this.lang = content['en'];
  152. }
  153. if (!this.params.token) {
  154. this.$message.error(this.lang.token);
  155. }
  156. }
  157. });