updatePassword.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <template>
  2. <view class="page_body">
  3. <!-- 导航 -->
  4. <rp-nav-bar height="88" :showHeaderborder="false" @GoBack="GoBack"></rp-nav-bar>
  5. <view class="page_module">
  6. <view class="page_title">修改密码</view>
  7. <view class="tip">请输入两次相同的密码进行修改</view>
  8. <uni-forms class="forms_style" :model="state.formData" labelWidth="0rpx">
  9. <uni-forms-item>
  10. <uni-easyinput v-model="state.formData.oldPassword" :type="state.showOldPassword?'password':'text'" :clearable="false" :passwordIcon="false" placeholder="请输入原始密码">
  11. <template #right>
  12. <!-- 小眼睛 -->
  13. <image v-if="state.formData.oldPassword && state.showOldPassword" class="password_icon" src="@/static/image/icon/login_eyes.png" @click="OnEyes('old')"></image>
  14. <image v-if="state.formData.oldPassword && !state.showOldPassword" class="password_icon" src="@/static/image/icon/login_eye.png" @click="OnEyes('old')"></image>
  15. </template>
  16. </uni-easyinput>
  17. </uni-forms-item>
  18. <uni-forms-item>
  19. <uni-easyinput v-model="state.formData.newPassword" :type="state.showNewPassword?'password':'text'" :clearable="false" :passwordIcon="false" placeholder="请输入6位以上新密码">
  20. <template #right>
  21. <!-- 小眼睛 -->
  22. <image v-if="state.formData.newPassword && state.showNewPassword" class="password_icon" src="@/static/image/icon/login_eyes.png" @click="OnEyes('new')"></image>
  23. <image v-if="state.formData.newPassword && !state.showNewPassword" class="password_icon" src="@/static/image/icon/login_eye.png" @click="OnEyes('new')"></image>
  24. </template>
  25. </uni-easyinput>
  26. </uni-forms-item>
  27. <uni-forms-item>
  28. <uni-easyinput v-model="state.formData.confirmNewPassword" :type="state.showConfirmNewPassword?'password':'text'" :clearable="false" :passwordIcon="false" placeholder="请再次输入新密码">
  29. <template #right>
  30. <!-- 小眼睛 -->
  31. <image v-if="state.formData.confirmNewPassword && state.showConfirmNewPassword" class="password_icon" src="@/static/image/icon/login_eyes.png" @click="OnEyes('confirmNew')"></image>
  32. <image v-if="state.formData.confirmNewPassword && !state.showConfirmNewPassword" class="password_icon" src="@/static/image/icon/login_eye.png" @click="OnEyes('confirmNew')"></image>
  33. </template>
  34. </uni-easyinput>
  35. </uni-forms-item>
  36. <uni-forms-item>
  37. <button class="btn_submit" type="primary" :loading="state.loading" @click="HandleUpdatePassword">确定</button>
  38. </uni-forms-item>
  39. </uni-forms>
  40. </view>
  41. </view>
  42. </template>
  43. <script setup>
  44. import { reactive, ref } from 'vue';
  45. import rpNavBar from '@/components/nav-bar.vue';
  46. import uniForms from '@/uni_modules/uni-forms/components/uni-forms/uni-forms.vue';
  47. import uniFormsItem from '@/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue';
  48. import uniEasyinput from '@/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue';
  49. import { encrypt } from '@/common/crypto.js';
  50. import user from '@/reqApi/user.js';
  51. import { useStore } from 'vuex';
  52. const store = useStore();
  53. const state = reactive({
  54. formData: {
  55. oldPassword: '',
  56. newPassword: '',
  57. confirmNewPassword: '',
  58. },
  59. showOldPassword:true,
  60. showNewPassword:true,
  61. showConfirmNewPassword:true,
  62. loading: false
  63. })
  64. //小眼睛
  65. const OnEyes = (type) => {
  66. if(type == 'new') {
  67. state.showNewPassword = !state.showNewPassword;
  68. }else if(type == 'old'){
  69. state.showOldPassword = !state.showOldPassword;
  70. }else{
  71. state.showConfirmNewPassword = !state.showConfirmNewPassword;
  72. }
  73. }
  74. //返回
  75. const GoBack = () => {
  76. uni.switchTab({
  77. url: '/pages/my/index'
  78. });
  79. }
  80. //修改密码
  81. const HandleUpdatePassword = () => {
  82. const passwordLen = state.formData.newPassword.length;
  83. //不为空限制
  84. if(!state.formData.oldPassword){
  85. uni.showToast({
  86. title: '请输入原始密码!',
  87. icon: 'none'
  88. })
  89. return false
  90. }
  91. if(!state.formData.newPassword){
  92. uni.showToast({
  93. title: '请输入新密码!',
  94. icon: 'none'
  95. })
  96. return false
  97. }
  98. if(!state.formData.confirmNewPassword){
  99. uni.showToast({
  100. title: '请再次输入新密码!',
  101. icon: 'none'
  102. })
  103. return false
  104. }
  105. if(state.formData.newPassword != state.formData.confirmNewPassword){
  106. uni.showToast({
  107. title: '两次输入密码不一致!',
  108. icon: 'none'
  109. })
  110. return false
  111. }
  112. state.loading = true;
  113. user.changeMinePassword({
  114. oldPassword:encrypt(state.formData.oldPassword),
  115. newPassword:encrypt(state.formData.newPassword),
  116. // confirmNewPassword:encrypt(state.formData.confirmNewPassword)
  117. }).then(res => {
  118. if (res.code == 200) {
  119. uni.showToast({
  120. title: '修改成功,请重新登录!',
  121. icon: 'none'
  122. })
  123. //清除token 以及登录相关信息
  124. store.dispatch('logout',true);
  125. uni.reLaunch({
  126. url: '/pages/login/index'
  127. });
  128. } else {
  129. uni.showToast({
  130. title: res.msg || '操作失败!',
  131. icon: 'none'
  132. })
  133. }
  134. }).finally(() => {
  135. state.loading = false;
  136. })
  137. }
  138. </script>
  139. <style scoped lang="scss">
  140. .page_body {
  141. height: 100%;
  142. background-color: #FFFFFF;
  143. .page_module {
  144. padding-top: 0rpx !important;
  145. padding: 0 48rpx;
  146. .page_title {
  147. margin-top: 32rpx;
  148. display: flex;
  149. width: 100%;
  150. color: #000000;
  151. font-size: 56rpx;
  152. line-height: 100%;
  153. font-weight: 500;
  154. }
  155. .tip {
  156. display: flex;
  157. width: 100%;
  158. margin-top: 16rpx;
  159. color: #CCCCCC;
  160. font-size: 32rpx;
  161. line-height: 100%;
  162. }
  163. .forms_style {
  164. margin-top: 64rpx;
  165. :deep(.uni-forms-item) {
  166. margin-bottom: 48rpx !important;
  167. &:last-child {
  168. margin-bottom: 0 !important;
  169. }
  170. .uni-forms-item__label {
  171. display: none;
  172. }
  173. .uni-forms-item__content {
  174. font-size: 32rpx;
  175. color: #333333;
  176. //输入框
  177. .uni-easyinput {
  178. .is-input-border {
  179. border: 1px solid #EBEEF5;
  180. border-radius: 16rpx;
  181. }
  182. .uni-easyinput__content-input {
  183. height: 96rpx;
  184. font-size: 32rpx;
  185. font-weight: 400;
  186. padding-left: 32rpx !important;
  187. .uni-easyinput__placeholder-class {
  188. font-size: 32rpx;
  189. color: #CCCCCC;
  190. }
  191. }
  192. .password_icon {
  193. width: 32rpx;
  194. height: 32rpx;
  195. margin: 0 32rpx;
  196. }
  197. .content-clear-icon {
  198. font-size: 40rpx !important;
  199. padding: 0 10rpx;
  200. }
  201. }
  202. }
  203. .btn_submit {
  204. margin-top: 32rpx;
  205. width: 100%;
  206. height: 96rpx;
  207. display: flex;
  208. justify-content: center;
  209. align-items: center;
  210. background-color: #2E64FA !important;
  211. border-radius: 16rpx;
  212. color: #FFFFFF;
  213. font-size: 32rpx;
  214. }
  215. }
  216. }
  217. }
  218. }
  219. </style>