mine.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. <template>
  2. <view class="home">
  3. <view class="form-area">
  4. <u--form
  5. labelPosition="left"
  6. :model="form"
  7. :rules="rules"
  8. ref="Form1"
  9. :labelWidth="100"
  10. labelAlign="left">
  11. <u-form-item
  12. label="姓名"
  13. prop="name"
  14. borderBottom>
  15. <u--input
  16. v-model="form.name"
  17. border="none">
  18. </u--input>
  19. </u-form-item>
  20. <u-form-item
  21. label="工号"
  22. prop="ID"
  23. borderBottom>
  24. {{form.ID}}
  25. </u-form-item>
  26. <u-form-item
  27. label="手机号"
  28. prop="phone"
  29. borderBottom>
  30. <u--input
  31. v-model="form.phone"
  32. border="none">
  33. </u--input>
  34. </u-form-item>
  35. <u-form-item
  36. label="邮箱"
  37. prop="email"
  38. borderBottom>
  39. <u--input
  40. v-model="form.email"
  41. border="none">
  42. </u--input>
  43. </u-form-item>
  44. <u-form-item
  45. label="密码"
  46. prop="pwd"
  47. borderBottom>
  48. <view class="demo-layout" style="width: 300rpx;">
  49. <u-button color="#000" size="small" @click="popupShow = true">修改密码</u-button>
  50. </view>
  51. </u-form-item>
  52. </u--form>
  53. </view>
  54. <u-popup :show="popupShow" @close="popupShow = false" >
  55. <view class="popup-area">
  56. <view class="form-area">
  57. <u--form
  58. labelPosition="left"
  59. :model="pwdForm"
  60. :rules="pwdRules"
  61. ref="Form2"
  62. :labelWidth="100"
  63. labelAlign="left">
  64. <u-form-item
  65. label="旧密码"
  66. prop="oldpwd"
  67. borderBottom>
  68. <u--input
  69. v-model="pwdForm.oldpwd"
  70. border="none">
  71. </u--input>
  72. </u-form-item>
  73. <u-form-item
  74. label="新密码"
  75. prop="newpwd"
  76. borderBottom>
  77. <u--input
  78. v-model="pwdForm.newpwd"
  79. border="none">
  80. </u--input>
  81. </u-form-item>
  82. <u-form-item
  83. label="确认密码"
  84. prop="surepwd"
  85. borderBottom>
  86. <u--input
  87. v-model="pwdForm.surepwd"
  88. border="none">
  89. </u--input>
  90. </u-form-item>
  91. </u--form>
  92. </view>
  93. <view class="pwd-btn">
  94. <u-button size="small" @click="popupShow = false">取消</u-button>
  95. <u-button color="#000" size="small" >确认</u-button>
  96. </view>
  97. </view>
  98. </u-popup>
  99. <view class="btn-area">
  100. <u-button color="#000" size="small">保存</u-button>
  101. </view>
  102. </view>
  103. </template>
  104. <script>
  105. import cache from '@/utils/storage.js'
  106. export default {
  107. data() {
  108. return {
  109. form:{
  110. name:cache.session.getJSON('nickName'),
  111. ID:cache.session.getJSON('userName'),
  112. phone:cache.session.getJSON('phone'),
  113. email:cache.session.getJSON('email'),
  114. pwd:""
  115. },
  116. popupShow:false,
  117. rules:{
  118. name:[
  119. {
  120. required: true,
  121. message: '请输入姓名',
  122. // blur和change事件触发检验
  123. trigger: ['blur']
  124. }
  125. ],
  126. phone:[
  127. {
  128. message: '请输入手机号',
  129. // blur和change事件触发检验
  130. trigger: ['blur']
  131. },
  132. {
  133. // 自定义验证函数,见上说明
  134. validator: (rule, value, callback) => {
  135. // 上面有说,返回true表示校验通过,返回false表示不通过
  136. // uni.$u.test.mobile()就是返回true或者false的
  137. return uni.$u.test.mobile(value);
  138. },
  139. message: '手机号码不正确',
  140. // 触发器可以同时用blur和change
  141. trigger: ['blur'],
  142. }
  143. ],
  144. email:[
  145. {
  146. message: '请输入邮箱',
  147. // blur和change事件触发检验
  148. trigger: ['blur']
  149. },
  150. {
  151. // 自定义验证函数,见上说明
  152. validator: (rule, value, callback) => {
  153. // 上面有说,返回true表示校验通过,返回false表示不通过
  154. // uni.$u.test.mobile()就是返回true或者false的
  155. return uni.$u.test.email(value);
  156. },
  157. message: '邮箱不正确',
  158. // 触发器可以同时用blur和change
  159. trigger: ['blur'],
  160. }
  161. ]
  162. },
  163. pwdForm:{
  164. oldpwd:"",
  165. newpwd:"",
  166. surepwd:""
  167. },
  168. pwdRules:{
  169. oldpwd:[
  170. {
  171. required: true,
  172. message: '请输入旧密码',
  173. // blur和change事件触发检验
  174. trigger: ['blur'],
  175. },
  176. {
  177. pattern: /^[0-9a-zA-Z]*$/g,
  178. // 正则检验前先将值转为字符串
  179. transform(value) {
  180. return String(value);
  181. },
  182. message: '密码只能包含字母或数字'
  183. },
  184. {
  185. min: 8,
  186. max: 16,
  187. message: '长度在8-16个字符之间'
  188. }
  189. ],
  190. newpwd:[
  191. {
  192. required: true,
  193. message: '请输入新密码',
  194. // blur和change事件触发检验
  195. trigger: ['blur'],
  196. },
  197. {
  198. pattern: /^[0-9a-zA-Z]*$/g,
  199. // 正则检验前先将值转为字符串
  200. transform(value) {
  201. return String(value);
  202. },
  203. message: '密码只能包含字母或数字'
  204. },
  205. {
  206. min: 8,
  207. max: 16,
  208. message: '长度在8-16个字符之间'
  209. }
  210. ],
  211. surepwd:[
  212. {
  213. required: true,
  214. message: '请确认密码',
  215. // blur和change事件触发检验
  216. trigger: ['blur'],
  217. },
  218. {
  219. pattern: /^[0-9a-zA-Z]*$/g,
  220. // 正则检验前先将值转为字符串
  221. transform(value) {
  222. return String(value);
  223. },
  224. message: '密码只能包含字母或数字'
  225. },
  226. {
  227. min: 8,
  228. max: 16,
  229. message: '长度在8-16个字符之间'
  230. },
  231. {
  232. validator: (rule, value, callback) => {
  233. if(value != this.pwdForm.newpwd){
  234. return false;
  235. }else{
  236. callback()
  237. }
  238. },
  239. message: '密码与新密码不一致'
  240. }
  241. ]
  242. }
  243. };
  244. },
  245. methods:{
  246. },
  247. onReady() {
  248. this.$refs.Form1.setRules(this.rules)
  249. this.$refs.Form2.setRules(this.pwdRules)
  250. }
  251. }
  252. </script>
  253. <style lang="scss" scoped>
  254. .home{
  255. position: relative;
  256. height: 100vh;
  257. }
  258. .layout-row{
  259. padding:50rpx 30rpx;
  260. border-bottom:1rpx solid #c6c6c6;
  261. font-size: 30rpx;
  262. }
  263. .form-area{
  264. /deep/.u-form-item{
  265. line-height: 300%;
  266. font-size: 30rpx;
  267. }
  268. /deep/ .u-form-item__body__left__content__label{
  269. padding-left:40rpx
  270. }
  271. }
  272. .btn-area{
  273. position: absolute;
  274. width: 300rpx;
  275. bottom: 100rpx;
  276. right: 50rpx;
  277. }
  278. .popup-area{
  279. height: 700rpx;
  280. box-sizing: border-box;
  281. // padding: 0 30rpx;
  282. .pwd-btn{
  283. display: flex;
  284. padding-top: 50rpx;
  285. /deep/.u-button{
  286. margin: 30rpx;
  287. }
  288. }
  289. }
  290. </style>