index.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <u-popup v-model="showPopup" mode="center" length="auto">
  3. <view class="jnpf-wrap jnpf-wrap-workflow">
  4. <u-form :model="dataForm" :rules="rules" ref="dataForm" label-position="left" label-width="150"
  5. label-align="left">
  6. <u-form-item label="旧密码" prop="oldPassword" required>
  7. <u-input v-model="dataForm.oldPassword" placeholder="旧密码" type="password"></u-input>
  8. </u-form-item>
  9. <u-form-item label="新密码" prop="password" required>
  10. <u-input v-model="dataForm.password" placeholder="新密码" type="password"></u-input>
  11. </u-form-item>
  12. <u-form-item label="重复密码" prop="repeatPsd" required>
  13. <u-input v-model="dataForm.repeatPsd" placeholder="重复密码" type="password"></u-input>
  14. </u-form-item>
  15. <u-form-item label="验证码" prop="code" required>
  16. <view class="u-flex">
  17. <u-input v-model="dataForm.code" placeholder="验证码"></u-input>
  18. <view style="flex: 0.1">
  19. <u-image :showLoading="true" :src="baseURL + imgUrl" width="130px" height="38px"
  20. @click="changeCode">
  21. </u-image>
  22. </view>
  23. </view>
  24. </u-form-item>
  25. <u-button class="buttom-btn" type="primary" @click.stop="dataFormSubmit">
  26. {{ "保存" }}
  27. </u-button>
  28. </u-form>
  29. </view>
  30. </u-popup>
  31. </template>
  32. <script>
  33. import md5Libs from "@/uni_modules/vk-uview-ui/libs/function/md5";
  34. export default {
  35. props: {
  36. passwordShow: {
  37. type: Boolean,
  38. default: true
  39. },
  40. baseForm: {
  41. type: Object,
  42. default: () => {}
  43. },
  44. },
  45. data() {
  46. var validatePass = (rule, value, callback) => {
  47. // const passwordreg = /(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,16}/
  48. //是否包含数字
  49. const containsNumbers = /[0-9]+/;
  50. //是否包含小写字符
  51. const includeLowercaseLetters = /[a-z]+/;
  52. //是否包含大写字符
  53. const includeUppercaseLetters = /[A-Z]+/;
  54. //是否包含字符
  55. const containsCharacters = /\W/;
  56. if (value === "") {
  57. callback(new Error("新密码不能为空"));
  58. } else if (this.baseForm.passwordStrengthLimit == 1) {
  59. if (this.baseForm.passwordLengthMin) {
  60. if (value.length < this.baseForm.passwordLengthMinNumber) {
  61. callback(
  62. new Error(
  63. "新密码长度不能小于" +
  64. this.baseForm.passwordLengthMinNumber +
  65. "位"
  66. )
  67. );
  68. }
  69. }
  70. if (this.baseForm.containsNumbers) {
  71. if (!containsNumbers.test(value)) {
  72. callback(new Error("新密码必须包含数字"));
  73. }
  74. }
  75. if (this.baseForm.includeLowercaseLetters) {
  76. if (!includeLowercaseLetters.test(value)) {
  77. callback(new Error("新密码必须包含小写字母"));
  78. }
  79. }
  80. if (this.baseForm.includeUppercaseLetters) {
  81. if (!includeUppercaseLetters.test(value)) {
  82. callback(new Error("新密码必须包含大写字字母"));
  83. }
  84. }
  85. if (this.baseForm.containsCharacters) {
  86. if (!containsCharacters.test(value)) {
  87. callback(new Error("新密码必须包含字符"));
  88. }
  89. }
  90. callback();
  91. } else {
  92. callback();
  93. }
  94. };
  95. var validatePass2 = (rule, value, callback) => {
  96. if (value === "") {
  97. callback(new Error("重复密码不能为空"));
  98. } else if (value !== this.dataForm.password) {
  99. callback(new Error("两次密码输入不一致"));
  100. } else {
  101. callback();
  102. }
  103. };
  104. return {
  105. showPopup: false,
  106. imgUrl: "",
  107. timestamp: "",
  108. dataForm: {
  109. oldPassword: "",
  110. password: "",
  111. repeatPsd: "",
  112. code: "",
  113. timestamp: "",
  114. },
  115. rules: {
  116. oldPassword: [{
  117. required: true,
  118. message: "旧密码不能为空",
  119. trigger: "blur",
  120. }, ],
  121. password: [{
  122. required: true,
  123. validator: validatePass,
  124. trigger: "blur",
  125. }, ],
  126. repeatPsd: [{
  127. required: true,
  128. validator: validatePass2,
  129. trigger: "blur",
  130. }, ],
  131. code: [{
  132. required: true,
  133. message: "验证码不能为空",
  134. trigger: "blur",
  135. }, ],
  136. },
  137. }
  138. },
  139. computed: {
  140. baseURL() {
  141. return this.define.baseURL;
  142. }
  143. },
  144. watch: {
  145. passwordShow(val) {
  146. if (val) {
  147. this.showPopup = val
  148. this.$nextTick(() => {
  149. this.$refs.dataForm.setRules(this.rules);
  150. });
  151. }
  152. },
  153. },
  154. created() {
  155. this.changeCode()
  156. },
  157. methods: {
  158. changeCode() {
  159. let timestamp = Math.random();
  160. this.timestamp = timestamp;
  161. this.imgUrl = `/api/file/ImageCode/${timestamp}`;
  162. },
  163. dataFormSubmit() {
  164. this.$refs["dataForm"].validate((valid) => {
  165. if (valid) {
  166. let query = {
  167. oldPassword: md5Libs.md5(this.dataForm.oldPassword),
  168. password: md5Libs.md5(this.dataForm.password),
  169. code: this.dataForm.code,
  170. timestamp: this.timestamp,
  171. };
  172. this.$emit('submit', query)
  173. }
  174. });
  175. },
  176. }
  177. }
  178. </script>
  179. <style>
  180. </style>