editUser.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <template>
  2. <div v-loading="dialogLoading" :element-loading-text="loadingText">
  3. <el-row :gutter="15" >
  4. <el-form ref="form" :model="dataSource" :rules="isDisabled ? {} : rules" label-width="100px">
  5. <el-col :span="24">
  6. <el-form-item label="昵称" prop="nickName">
  7. <el-input v-model="dataSource.nickName" placeholder="请输入昵称" maxlength="50" show-word-limit clearable :disabled="isDisabled"/>
  8. </el-form-item>
  9. <el-form-item label="真实姓名" prop="realName">
  10. <el-input v-model="dataSource.realName" placeholder="请输入真实姓名" maxlength="5" show-word-limit clearable :disabled="isDisabled"/>
  11. </el-form-item>
  12. <el-form-item label="手机号" prop="phoneNumber">
  13. <el-input v-model="dataSource.phoneNumber" placeholder="请输入手机号" maxlength="11" show-word-limit clearable :disabled="isDisabled"/>
  14. </el-form-item>
  15. <el-form-item label="性别" prop="sex">
  16. <el-select v-model="dataSource.sex" placeholder="请选择性别" clearable :disabled="isDisabled">
  17. <el-option
  18. v-for="dict in dict.type.sys_user_sex"
  19. :key="dict.value"
  20. :label="dict.label"
  21. :value="dict.value"
  22. ></el-option>
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item label="生日" prop="birthday" clearable >
  26. <el-date-picker clearable
  27. v-model="dataSource.birthday"
  28. type="date"
  29. value-format="yyyy-MM-dd"
  30. placeholder="请选择生日"
  31. :disabled="isDisabled">
  32. </el-date-picker>
  33. </el-form-item>
  34. <el-form-item label="头像地址" prop="avatarUrl" >
  35. <image-upload v-model="dataSource.avatarUrl" :limit="1" :disabled="isDisabled"/>
  36. </el-form-item>
  37. <el-form-item label="客户等级" prop="level">
  38. <el-input-number v-model="dataSource.level" :min="1" :max="50" label="请输入客户等级" :disabled="isDisabled"></el-input-number>
  39. </el-form-item>
  40. <el-form-item label="备注" prop="remark">
  41. <el-input v-model="dataSource.remark" placeholder="请输入备注" maxlength="50" show-word-limit />
  42. </el-form-item>
  43. </el-col>
  44. </el-form>
  45. </el-row>
  46. <div slot="footer" class="dialog-footer">
  47. <el-button type="primary" @click="submitForm" style="margin-left: 5%">提交</el-button>
  48. <el-button @click="closeDialog">取 消</el-button>
  49. </div>
  50. </div>
  51. </template>
  52. <script>
  53. import {addUser,updateUser} from "../../../../api/app/user";
  54. export default {
  55. name: "editUser",
  56. dicts: ['sys_user_sex'],
  57. props: {
  58. dataSource:{
  59. type: Object
  60. },
  61. isDisabled:{
  62. type: Boolean
  63. }
  64. },
  65. data(){
  66. return {
  67. dialogLoading:false,
  68. loadingText:"",
  69. // 表单校验
  70. rules: {
  71. nickName:[{
  72. required: true,
  73. message: "昵称不能为空",
  74. trigger: "blur"
  75. }],
  76. realName:[{
  77. required: true,
  78. message: "真实姓名不能为空",
  79. trigger: "blur"
  80. }],
  81. phoneNumber:[{
  82. required: true,
  83. message: "手机号不能为空",
  84. trigger: "blur"
  85. }],
  86. sex:[{
  87. required: true,
  88. message: "性别不能为空",
  89. trigger: "blur"
  90. }],
  91. birthday:[{
  92. required: true,
  93. message: "生日不能为空",
  94. trigger: "blur"
  95. }],
  96. },
  97. }
  98. },
  99. methods: {
  100. closeDialog() {
  101. var ctx = this
  102. this.$confirm('是否关闭表单,关闭后数据将丢失?').then(function() {
  103. ctx.$emit('closeDialog')
  104. }).then(() => {}).catch(() => {});
  105. },
  106. submitForm(){
  107. this.$refs["form"].validate(valid => {
  108. if (valid) {
  109. if (this.dataSource.id != null) {
  110. updateUser(this.dataSource).then(response => {
  111. this.$modal.msgSuccess("修改成功");
  112. this.$emit('onSubmit',this.dataSource)
  113. });
  114. } else {
  115. addUser(this.dataSource).then(response => {
  116. this.$modal.msgSuccess("新增成功");
  117. this.$emit('onSubmit',response.data)
  118. });
  119. }
  120. }
  121. });
  122. }
  123. }
  124. }
  125. </script>
  126. <style scoped>
  127. </style>