index.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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">
  5. <input v-model="formData.password" placeholder="请输入原密码" />
  6. </uni-forms-item>
  7. <uni-forms-item label="新密码" name="newPassword">
  8. <input v-model="formData.newPassword" placeholder="请输入新密码" />
  9. </uni-forms-item>
  10. </uni-forms>
  11. <u-button @click="submit" class="submit" type="primary">提交</u-button>
  12. </view>
  13. </template>
  14. <script>
  15. import {
  16. encrypt
  17. } from '@/utils/jsencrypt.js'
  18. export default {
  19. data() {
  20. return {
  21. // 表单数据
  22. formData: {
  23. password: null,
  24. newPassword: null,
  25. },
  26. rules: {
  27. password: {
  28. rules: [{
  29. required: true,
  30. errorMessage: '请输入原密码',
  31. }, ]
  32. },
  33. newPassword: {
  34. rules: [{
  35. required: true,
  36. errorMessage: '请输入新密码',
  37. },
  38. {
  39. validateFunction: function(rule, value, data, callback) {
  40. if (data.password === data.newPassword) {
  41. callback('不能和与原密码相同')
  42. }
  43. return true
  44. }
  45. }
  46. ]
  47. }
  48. }
  49. }
  50. },
  51. methods: {
  52. submit() {
  53. this.$refs.form.validate().then(res => {
  54. this.$store.dispatch('user/updatePassword', this.formData).then(req => {
  55. if (req.data.code === 200) {
  56. uni.showToast({
  57. title: req.msg,
  58. duration: 2000,
  59. icon: "success"
  60. });
  61. uni.redirectTo({
  62. url: "/pages/login/index"
  63. })
  64. }
  65. })
  66. }).catch(err => {
  67. })
  68. }
  69. }
  70. }
  71. </script>
  72. <style lang="scss" scoped>
  73. .container {
  74. padding: 20rpx;
  75. }
  76. .submit {
  77. width: 400rpx;
  78. margin-top: 60rpx
  79. }
  80. </style>