editUser.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <template>
  2. <view class=" uni-container ">
  3. <view class="u-demo-block">
  4. <view class="u-demo-block__content">
  5. <!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
  6. <u--form label-position="top" :model="user" ref="form1" label-width='100'>
  7. <u-form-item label-position="top" label="用户昵称" prop="nickname">
  8. <u--input v-model="user.nickname" border="none" placeholder="请输入用户昵称"></u--input>
  9. </u-form-item>
  10. <u-form-item label-position="top" label="手机号码" prop="mobile">
  11. <u--input v-model="user.mobile" border="none" placeholder="请输入手机号码"></u--input>
  12. </u-form-item>
  13. <u-form-item label-position="top" label="邮箱" prop="email">
  14. <u--input v-model="user.email" border="none" placeholder="请输入邮箱"></u--input>
  15. </u-form-item>
  16. <u-form-item label-position="top" label="用户性别" prop="sexname"
  17. @click="showSex = true; hideKeyboard()">
  18. <u-input v-model="user.sexname" disabled disabledColor="#ffffff" placeholder="请选择性别"
  19. border="none"></u-input>
  20. <u-icon slot="right" name="arrow-right"></u-icon>
  21. </u-form-item>
  22. <u-form-item label-position="top" label="备注" prop="remark">
  23. <u--input v-model="user.remark" type="textarea" border="none" placeholder="请输入内容"></u--input>
  24. </u-form-item>
  25. </u--form>
  26. <u-button type="primary" text="提交"
  27. customStyle="height: 72rpx;width: 340rpx;margin-top: 100rpx;display: flex;align-items: center;justify-content: center;border-radius: 60rpx;background: #4CB2B6;"
  28. @click="submit"></u-button>
  29. <!-- description="如果选择保密会报错" 放在u-action-sheet中的 -->
  30. <u-action-sheet :show="showSex" :actions="actions" title="请选择性别" @close="showSex = false"
  31. @select="sexSelect">
  32. </u-action-sheet>
  33. </view>
  34. </view>
  35. </view>
  36. </template>
  37. <script>
  38. import {
  39. updateUser // 修改用户
  40. } from '@/api/personnel_permissions';
  41. import {
  42. DICT_TYPE,
  43. getDictDatas
  44. } from "@/utils/dict";
  45. let that = null;
  46. export default {
  47. data() {
  48. return {
  49. user: {
  50. id: undefined,
  51. deptId: undefined,
  52. username: undefined,
  53. nickname: undefined,
  54. password: undefined,
  55. mobile: undefined,
  56. email: undefined,
  57. sex: undefined,
  58. status: "0",
  59. remark: undefined,
  60. },
  61. showSex: false,
  62. actions: getDictDatas(DICT_TYPE.SYSTEM_USER_SEX),
  63. rules: {
  64. 'username': {
  65. // type: 'string',
  66. required: true,
  67. message: '用户名称不能为空',
  68. trigger: ['blur']
  69. },
  70. 'nickname': {
  71. // type: 'string',
  72. required: true,
  73. message: '用户昵称不能为空',
  74. trigger: ['blur']
  75. },
  76. 'password': {
  77. // type: 'string',
  78. required: true,
  79. message: '用户密码不能为空',
  80. trigger: ['blur']
  81. },
  82. 'sex': {
  83. // type: 'number',
  84. required: true,
  85. message: '请选择男或女',
  86. trigger: ['change']
  87. },
  88. 'email': {
  89. type: 'email',
  90. // required: true,
  91. message: "'请输入正确的邮箱地址",
  92. trigger: ["blur", "change"]
  93. },
  94. 'mobile': {
  95. pattern: /^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/,
  96. // type: 'string',
  97. // required: true,
  98. message: '请输入正确的手机号码',
  99. trigger: ['blur']
  100. },
  101. },
  102. }
  103. },
  104. onLoad(option) {
  105. that = this
  106. let str = decodeURIComponent(option.val)
  107. this.actions.map(i => i.name = i.label)
  108. if (str != "undefined") {
  109. that.user = JSON.parse(str);
  110. this.user.sexname = this.sexTrans(this.user.sex)
  111. }
  112. },
  113. onReady() {
  114. // 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
  115. this.$refs.form1.setRules(this.rules)
  116. },
  117. methods: {
  118. sexTrans(val) {
  119. let eduStr = ''
  120. this.actions.map(i => {
  121. if (i.value == val) {
  122. eduStr = i.name
  123. }
  124. })
  125. return eduStr
  126. },
  127. getUser() {
  128. getUserProfile().then(response => {
  129. this.user = response.data
  130. this.user.sexname = this.sexTrans(this.user.sex)
  131. })
  132. },
  133. sexSelect(e) {
  134. this.user.sexname = e.name
  135. this.user.sex = e.value
  136. this.$refs.form1.validateField('userInfo.sex')
  137. },
  138. submit() {
  139. // 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
  140. this.$refs.form1.validate().then(res => {
  141. delete this.user.dept
  142. updateUser(this.user).then(response => {
  143. this.$modal.msgSuccess('修改成功')
  144. this.$tab.navigateBack('/pagesA/fire/personnel_permissions/index')
  145. })
  146. }).catch(errors => {
  147. // uni.$u.toast('校验失败')/
  148. })
  149. },
  150. hideKeyboard() {
  151. uni.hideKeyboard()
  152. }
  153. }
  154. }
  155. </script>
  156. <style lang="scss" scoped>
  157. .uni-container {
  158. height: 100%;
  159. padding: 20px;
  160. background: #f5f7f9;
  161. }
  162. /deep/.u-form-item__body__left__content[data-v-5e7216f1],
  163. /deep/.u-form-item__body__left__content.data-v-5e7216f1,
  164. /deep/.u-form-item__body__left__content {
  165. padding-right: 0;
  166. }
  167. page {
  168. height: 100%;
  169. background-color: #f5f7f9;
  170. position: relative;
  171. }
  172. /deep/ .u-input[data-v-fdbb9fe6],
  173. /deep/ .u-input.data-v-fdbb9fe6 {
  174. background-color: #fff;
  175. border: 1px solid #E2E4E6;
  176. height: 100rpx;
  177. }
  178. /deep/ .uni-input-wrapper {
  179. margin-left: 20rpx;
  180. }
  181. /deep/ .item__body__right__content__icon {
  182. position: absolute;
  183. right: 50rpx;
  184. }
  185. </style>