Informationmodification.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <template>
  2. <view class="Personalinformationedit">
  3. <!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
  4. <u--form
  5. labelPosition="left"
  6. :model="model1"
  7. :rules="rules"
  8. ref="form1">
  9. <u-form-item
  10. labelWidth="120"
  11. label="用户名:"
  12. prop="userInfo.name"
  13. borderBottom
  14. ref="item1" >
  15. <u--input
  16. v-model="model1.userInfo.name"
  17. clearable
  18. border="none"
  19. ></u--input>
  20. </u-form-item>
  21. <u-form-item
  22. labelWidth="120"
  23. label="手机:"
  24. prop="userInfo.phone"
  25. borderBottom
  26. ref="item1"
  27. >
  28. <u--input
  29. v-model="model1.userInfo.phone"
  30. clearable
  31. border="none"
  32. ></u--input>
  33. </u-form-item>
  34. <u-form-item
  35. labelWidth="120"
  36. label="邮箱:"
  37. prop="userInfo.email"
  38. borderBottom
  39. ref="item1"
  40. >
  41. <u--input
  42. v-model="model1.userInfo.email"
  43. clearable
  44. border="none"
  45. ></u--input>
  46. </u-form-item>
  47. <u-form-item
  48. label="性别:"
  49. labelWidth="120"
  50. prop="userInfo.sex"
  51. borderBottom
  52. @click="showSex = true; hideKeyboard()"
  53. ref="item1"
  54. >
  55. <u--input
  56. v-model="model1.userInfo.sex"
  57. disabled
  58. disabledColor="#ffffff"
  59. placeholder="请选择性别"
  60. border="none"
  61. ></u--input>
  62. <u-icon
  63. slot="right"
  64. name="arrow-right"
  65. ></u-icon>
  66. </u-form-item>
  67. <u-form-item
  68. labelWidth="120"
  69. label="地址:"
  70. prop="userInfo.address"
  71. borderBottom
  72. ref="item1" >
  73. <u--input
  74. v-model="model1.userInfo.address"
  75. clearable
  76. border="none"
  77. ></u--input>
  78. </u-form-item>
  79. <u-form-item
  80. labelWidth="120"
  81. label="部门:"
  82. prop="userInfo.department"
  83. borderBottom
  84. ref="item1" >
  85. <u--input
  86. v-model="model1.userInfo.department"
  87. clearable
  88. border="none"
  89. ></u--input>
  90. </u-form-item>
  91. <u-form-item
  92. labelWidth="120"
  93. label="职位:"
  94. prop="userInfo.position"
  95. borderBottom
  96. ref="item1" >
  97. <u--input
  98. v-model="model1.userInfo.position"
  99. clearable
  100. border="none"
  101. ></u--input>
  102. </u-form-item>
  103. </u--form>
  104. <u-action-sheet
  105. :show="showSex"
  106. :actions="actions"
  107. title="请选择性别"
  108. @close="showSex = false"
  109. @select="sexSelect"
  110. >
  111. </u-action-sheet>
  112. <view class="submitdata">
  113. <u-button type="primary" @click="submit">提交</u-button>
  114. </view>
  115. </view>
  116. </template>
  117. <script>
  118. export default {
  119. data() {
  120. return {
  121. showSex: false,
  122. model1: {
  123. userInfo: {
  124. name: '李伟',
  125. sex: '男',
  126. phone:'18326607835',
  127. email:'328319643@qq.com',
  128. address:'安徽省合肥市',
  129. department:'合肥传秀科技技术部',
  130. position:'前端工程师'
  131. },
  132. },
  133. actions: [
  134. {
  135. name: '男',
  136. },
  137. {
  138. name: '女',
  139. },
  140. {
  141. name: '保密',
  142. },
  143. ],
  144. rules: {
  145. 'userInfo.name': {
  146. type: 'string',
  147. required: true,
  148. message: '请填写姓名',
  149. trigger: ['blur', 'change']
  150. },
  151. 'userInfo.email': [
  152. {
  153. required: true,
  154. message: '请输入邮箱号',
  155. trigger: ['change','blur'],
  156. },
  157. {
  158. // 自定义验证函数,见上说明
  159. validator: (rule, value, callback) => {
  160. // 上面有说,返回true表示校验通过,返回false表示不通过
  161. // uni.$u.test.mobile()就是返回true或者false的
  162. return uni.$u.test.email(value);
  163. },
  164. message: '邮箱不正确',
  165. // 触发器可以同时用blur和change
  166. trigger: ['change','blur'],
  167. }
  168. ],
  169. 'userInfo.phone': [
  170. {
  171. required: true,
  172. message: '请输入邮箱',
  173. trigger: ['change','blur'],
  174. },
  175. {
  176. // 自定义验证函数,见上说明
  177. validator: (rule, value, callback) => {
  178. // 上面有说,返回true表示校验通过,返回false表示不通过
  179. // uni.$u.test.mobile()就是返回true或者false的
  180. return uni.$u.test.mobile(value);
  181. },
  182. message: '手机号码不正确',
  183. // 触发器可以同时用blur和change
  184. trigger: ['change','blur'],
  185. }
  186. ],
  187. 'userInfo.sex': {
  188. type: 'string',
  189. max: 2,
  190. required: true,
  191. message: '请选择',
  192. trigger: ['blur', 'change']
  193. },
  194. },
  195. };
  196. },
  197. methods: {
  198. sexSelect(e) {
  199. this.model1.userInfo.sex = e.name
  200. this.$refs.form1.validateField('userInfo.sex')
  201. },
  202. submit() {
  203. this.$refs.form1.validate().then(res => {
  204. uni.$u.toast('校验通过')
  205. }).catch(errors => {
  206. uni.$u.toast('校验失败')
  207. })
  208. },
  209. },
  210. onReady() {
  211. //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
  212. this.$refs.form1.setRules(this.rules)
  213. },
  214. };
  215. </script>
  216. <style lang="scss">
  217. .Personalinformationedit{
  218. width: 690rpx;
  219. padding: 30rpx;
  220. }
  221. .submitdata{
  222. margin-top: 40rpx;
  223. }
  224. </style>