index.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <template>
  2. <view class="container">
  3. <uni-forms ref="form" :modelValue="formData" :rules="rules" label-position="top">
  4. <uni-forms-item label="原密码" name="password" required>
  5. <input v-model="formData.password" placeholder="请输入原密码" password />
  6. </uni-forms-item>
  7. <uni-forms-item label="新密码" name="newPassword" required>
  8. <input v-model="formData.newPassword" placeholder="请输入新密码" password />
  9. </uni-forms-item>
  10. <uni-forms-item label="确认密码" name="conWord" required>
  11. <input v-model="formData.conWord" placeholder="请确认新密码" password />
  12. </uni-forms-item>
  13. </uni-forms>
  14. <u-button @click="submit" class="submit" type="primary">提交</u-button>
  15. <uni-popup ref="inputDialog" type="dialog">
  16. <uni-popup-dialog ref="inputClose" mode="base" title="系统提示" placeholder="请输入内容" @confirm="confirm">
  17. 修改成功,是否重新登录?
  18. </uni-popup-dialog>
  19. </uni-popup>
  20. </view>
  21. </template>
  22. <script>
  23. import {
  24. encrypt
  25. } from '@/utils/jsencrypt.js'
  26. export default {
  27. data() {
  28. return {
  29. // 表单数据
  30. formData: {
  31. password: null,
  32. newPassword: null,
  33. conWord: null
  34. },
  35. rules: {
  36. password: {
  37. rules: [{
  38. required: true,
  39. errorMessage: '请输入原密码',
  40. }, ]
  41. },
  42. newPassword: {
  43. rules: [{
  44. required: true,
  45. errorMessage: '请输入新密码',
  46. },
  47. {
  48. validateFunction: function(rule, value, data, callback) {
  49. if (data.password === data.newPassword) {
  50. callback('不能和与原密码相同')
  51. }
  52. return true
  53. }
  54. }
  55. ]
  56. },
  57. conWord: {
  58. rules: [{
  59. required: true,
  60. errorMessage: '请确认新密码',
  61. },
  62. {
  63. validateFunction: function(rule, value, data, callback) {
  64. if (data.conWord !== data.newPassword) {
  65. callback('必须与新密码相同')
  66. }
  67. return true
  68. }
  69. }
  70. ]
  71. }
  72. }
  73. }
  74. },
  75. methods: {
  76. submit() {
  77. this.$refs.form.validate().then(res => {
  78. this.$store.dispatch('user/updatePassword', this.formData).then(req => {
  79. if (req.data.code === 200) {
  80. this.$refs.inputDialog.open()
  81. } else {
  82. uni.showToast({
  83. title: req.data.msg,
  84. duration: 2000,
  85. icon: "error"
  86. });
  87. }
  88. })
  89. }).catch(err => {
  90. })
  91. },
  92. confirm() {
  93. uni.redirectTo({
  94. url: "/pages/login/index"
  95. })
  96. }
  97. }
  98. }
  99. </script>
  100. <style lang="scss" scoped>
  101. .container {
  102. padding: 20rpx;
  103. }
  104. .submit {
  105. width: 400rpx;
  106. margin-top: 60rpx
  107. }
  108. ::v-deep .uni-input-placeholder {
  109. font-size: 12px
  110. }
  111. ::v-deep .uni-input-input {
  112. border-bottom: 1px solid #959595
  113. }
  114. </style>