index.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <template>
  2. <div class="integralPage">
  3. <div class="configuration">
  4. <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
  5. <el-form-item label="旧手机号" prop="oldPhone">
  6. <el-input
  7. v-if="Number(privacyTime) === 0" disabled :value="hidden(oldPhone, 3, 4)" style="width: 70%"
  8. placeholder="请输入旧手机号"
  9. />
  10. <el-input v-else v-model="oldPhone" disabled style="width: 70%" placeholder="请输入旧手机号" />
  11. </el-form-item>
  12. <el-form-item label="新手机号" prop="newPhone">
  13. <el-input v-model="ruleForm.newPhone" maxlength="11" style="width: 70%" placeholder="请输入新手机号" />
  14. </el-form-item>
  15. <el-form-item label="验证码" prop="code">
  16. <GraphicVerificationCode
  17. api-type="update"
  18. :phone="ruleForm.newPhone"
  19. @input="(e) => ruleForm.code = e"
  20. ></GraphicVerificationCode>
  21. </el-form-item>
  22. <el-form-item>
  23. <el-button type="primary" @click="submint"> 确定 </el-button>
  24. </el-form-item>
  25. </el-form>
  26. </div>
  27. </div>
  28. </template>
  29. <script>
  30. import GraphicVerificationCode from '@/components/GraphicVerificationCode/index.vue'
  31. import {
  32. getAdminPhone,
  33. updatePhone
  34. } from '@/api/privacy'
  35. const JM = require('@/utils/rsaEncrypt.js')
  36. export default {
  37. name: 'Phone',
  38. components: {
  39. GraphicVerificationCode
  40. },
  41. data() {
  42. // 旧手机号
  43. const oldPhone = (rule, value, callback) => {
  44. if (!value) {
  45. return callback(new Error('请输入旧手机号'))
  46. } else if (/^1[3456789]\d{9}$/.test(value) === false) {
  47. return callback(new Error('请输入正确的手机号'))
  48. }
  49. callback()
  50. }
  51. // 新手机号
  52. const newPhone = (rule, value, callback) => {
  53. if (!value) {
  54. return callback(new Error('请输入新手机号'))
  55. } else if (/^1[3456789]\d{9}$/.test(value) === false) {
  56. return callback(new Error('请输入正确的手机号'))
  57. }
  58. callback()
  59. }
  60. // 验证码
  61. const code = (rule, value, callback) => {
  62. if (!value) {
  63. return callback(new Error('请输入验证码'))
  64. }
  65. callback()
  66. }
  67. return {
  68. ruleForm: {
  69. newPhone: '',
  70. code: ''
  71. },
  72. oldPhone: '',
  73. rules: {
  74. oldPhone: [ { required: true, validator: oldPhone, trigger: 'blur' } ],
  75. newPhone: [ { required: true, validator: newPhone, trigger: 'blur' } ],
  76. code: [ { required: true, validator: code, trigger: 'blur' } ]
  77. },
  78. privacyTime: 0
  79. }
  80. },
  81. created() {
  82. this.getPhone()
  83. this.privacyTime = localStorage.getItem('privacyTime')
  84. },
  85. mounted() { },
  86. methods: {
  87. // 获取管理员电话
  88. getPhone() {
  89. getAdminPhone().then((res) => {
  90. this.oldPhone = res.data
  91. })
  92. },
  93. submint() {
  94. if (this.ruleForm.newPhone === '' || this.ruleForm.newPhone === undefined) {
  95. this.$message.error('请填写新手机号')
  96. return
  97. }
  98. if (/^1[3456789]\d{9}$/.test(this.ruleForm.newPhone) === false) {
  99. this.$message.error('请填写正确手机号')
  100. return false
  101. }
  102. if (this.ruleForm.code === '' || this.ruleForm.code === undefined) {
  103. this.$message.error('请填写验证码')
  104. return
  105. }
  106. var data = {
  107. code: JM.encrypt(this.ruleForm.code),
  108. newPhone: JM.encrypt(this.ruleForm.newPhone),
  109. phone: JM.encrypt(this.oldPhone)
  110. }
  111. updatePhone(data).then((res) => {
  112. if (res.code === '') {
  113. this.$message({
  114. message: '手机号修改成功',
  115. type: 'success'
  116. })
  117. this.getPhone()
  118. this.ruleForm = {
  119. newPhone: '',
  120. code: ''
  121. }
  122. }
  123. })
  124. },
  125. // 中间部分
  126. hidden(str, frontLen, endLen) {
  127. let endLenData = 0
  128. if (str.length !== 2) {
  129. endLenData = endLen
  130. }
  131. const len = str.length - frontLen - endLenData
  132. let xing = ''
  133. for (let i = 0; i < len; i++) {
  134. xing += '*'
  135. }
  136. return (
  137. str.substring(0, frontLen) + xing + str.substring(str.length - endLenData)
  138. )
  139. }
  140. }
  141. }
  142. </script>
  143. <style lang="scss" scpoed>
  144. .integralPage {
  145. padding: 32px 20px;
  146. .configuration {
  147. width: 600px;
  148. }
  149. }
  150. </style>