mine.vue 6.5 KB

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