index.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <view class="pwd-retrieve-container">
  3. <u-navbar :titleStyle="{ color: '#fff' }" :autoBack="true" title="修改密码" :placeholder="true" :safeAreaInsetTop="true" :bgColor="proxy.$settingStore.themeColor.color">
  4. <template #left>
  5. <view class="u-nav-slot">
  6. <u-icon name="arrow-left" size="19" color="#fff"></u-icon>
  7. </view>
  8. </template>
  9. </u-navbar>
  10. <view class="uni-content-header"></view>
  11. <view class="uni-content-body">
  12. <uni-forms ref="form" :value="user" labelWidth="80px">
  13. <uni-forms-item name="oldPassword" label="旧密码">
  14. <uni-easyinput type="password" v-model="user.oldPassword" placeholder="请输入旧密码" />
  15. </uni-forms-item>
  16. <uni-forms-item name="newPassword" label="新密码">
  17. <uni-easyinput type="password" v-model="user.newPassword" placeholder="请输入新密码" />
  18. </uni-forms-item>
  19. <uni-forms-item name="confirmPassword" label="确认密码">
  20. <uni-easyinput type="password" v-model="user.confirmPassword" placeholder="请确认新密码" />
  21. </uni-forms-item>
  22. <button type="primary" @click="submit">提交</button>
  23. </uni-forms>
  24. </view>
  25. </view>
  26. </template>
  27. <script setup>
  28. import { updateUserPwd } from "@/api/system/user";
  29. import { onReady, onLoad, onShow, onNavigationBarButtonTap } from "@dcloudio/uni-app";
  30. import { ref, onMounted, inject, shallowRef, reactive, getCurrentInstance, toRefs } from "vue";
  31. import useStores from "@/store/modules/user.js";
  32. const useStore = useStores();
  33. const { proxy } = getCurrentInstance();
  34. const data = reactive({
  35. user: {
  36. oldPassword: undefined,
  37. newPassword: undefined,
  38. confirmPassword: undefined,
  39. },
  40. rules: {
  41. oldPassword: {
  42. rules: [
  43. {
  44. required: true,
  45. errorMessage: "旧密码不能为空",
  46. },
  47. ],
  48. },
  49. newPassword: {
  50. rules: [
  51. {
  52. required: true,
  53. errorMessage: "新密码不能为空",
  54. },
  55. {
  56. minLength: 6,
  57. maxLength: 20,
  58. errorMessage: "长度在 6 到 20 个字符",
  59. },
  60. ],
  61. },
  62. confirmPassword: {
  63. rules: [
  64. {
  65. required: true,
  66. errorMessage: "确认密码不能为空",
  67. },
  68. {
  69. validateFunction: (rule, value, data) => data.newPassword === value,
  70. errorMessage: "两次输入的密码不一致",
  71. },
  72. ],
  73. },
  74. },
  75. });
  76. const { user, rules } = toRefs(data);
  77. const form = ref(null);
  78. function submit() {
  79. form.value.validate().then((res) => {
  80. updateUserPwd(user.value.oldPassword, user.value.newPassword).then((response) => {
  81. proxy.$modal.msgSuccess("修改成功");
  82. });
  83. });
  84. }
  85. onShow(() => {
  86. //调用系统主题颜色
  87. proxy.$settingStore.systemThemeColor([1]);
  88. });
  89. onReady(() => {
  90. form.value.setRules(rules.value);
  91. });
  92. </script>
  93. <style>
  94. page {
  95. background-color: #ffffff;
  96. }
  97. </style>
  98. <style lang="scss">
  99. .uni-content-body {
  100. padding-top: 36rpx;
  101. padding: 15px;
  102. }
  103. </style>