UserEdit.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <template>
  2. <div class="user-edit part-box part-box-pad part-box-border">
  3. <el-form
  4. ref="modalFormComp"
  5. :model="modalForm"
  6. :rules="rules"
  7. label-width="100px"
  8. >
  9. <el-form-item prop="loginName" label="用户名:">
  10. <el-input
  11. style="width:282px;"
  12. v-model.trim="modalForm.loginName"
  13. placeholder="请输入用户名"
  14. clearable
  15. ></el-input>
  16. </el-form-item>
  17. <el-form-item prop="name" label="姓名:">
  18. <el-input
  19. style="width:282px;"
  20. v-model.trim="modalForm.name"
  21. placeholder="请输入姓名"
  22. clearable
  23. ></el-input>
  24. </el-form-item>
  25. <el-form-item prop="phone" label="手机号:">
  26. <el-input
  27. style="width:282px;"
  28. v-model.trim="modalForm.phone"
  29. placeholder="请输入手机号"
  30. clearable
  31. ></el-input>
  32. </el-form-item>
  33. <el-form-item prop="roleCode" label="角色:">
  34. <el-select
  35. style="width:282px;"
  36. v-model="modalForm.roleCode"
  37. placeholder="请选择角色"
  38. >
  39. <el-option
  40. v-for="item in roles"
  41. :key="item.id"
  42. :label="item.roleName"
  43. :value="item.roleCode"
  44. >
  45. </el-option>
  46. </el-select>
  47. </el-form-item>
  48. <el-form-item
  49. prop="courseId"
  50. label="科目:"
  51. v-if="modalForm.roleCode === 'QUESTION_TEACHER'"
  52. >
  53. <el-select
  54. style="width:282px;"
  55. v-model="modalForm.courseId"
  56. placeholder="请选择科目"
  57. multiple
  58. >
  59. <el-option
  60. v-for="item in courses"
  61. :key="item.id"
  62. :label="item.name"
  63. :value="item.id"
  64. >
  65. </el-option>
  66. </el-select>
  67. </el-form-item>
  68. <el-form-item>
  69. <el-button
  70. style="width:88px;"
  71. type="primary"
  72. :disabled="isSubmit"
  73. @click="submit('modalFormComp')"
  74. >保存</el-button
  75. >
  76. <el-button style="width:88px;" @click="goback">返回</el-button>
  77. </el-form-item>
  78. </el-form>
  79. </div>
  80. </template>
  81. <script>
  82. import { updateUser, userDetail, roleList, courseList } from "../api";
  83. import { logout } from "../../login/api";
  84. import { phone } from "@/plugins/formRules";
  85. export default {
  86. name: "user-edit",
  87. data() {
  88. const courseIdValidator = (rule, value, callback) => {
  89. if (!value || !value.length) {
  90. callback(new Error("请选择科目"));
  91. } else {
  92. callback();
  93. }
  94. };
  95. return {
  96. modalForm: {
  97. id: "",
  98. name: "",
  99. phone: "",
  100. loginName: "",
  101. roleCode: "",
  102. courseId: ""
  103. },
  104. rules: {
  105. phone,
  106. name: [
  107. {
  108. required: true,
  109. message: "请输入用户名",
  110. trigger: "change"
  111. }
  112. ],
  113. loginName: [
  114. {
  115. required: true,
  116. message: "请输入姓名",
  117. trigger: "change"
  118. }
  119. ],
  120. roleCode: [
  121. {
  122. required: true,
  123. message: "请选择角色",
  124. trigger: "change"
  125. }
  126. ],
  127. courseId: [
  128. {
  129. required: true,
  130. validator: courseIdValidator,
  131. trigger: "change"
  132. }
  133. ]
  134. },
  135. user: {},
  136. roles: [],
  137. courses: [],
  138. isSubmit: false
  139. };
  140. },
  141. created() {
  142. this.init();
  143. },
  144. methods: {
  145. async init() {
  146. const data = await roleList();
  147. this.roles = data.records;
  148. const userRes = await userDetail(this.$route.params.userId);
  149. if (!userRes.account) {
  150. this.$message.error("当前用户不存在!");
  151. return;
  152. }
  153. this.user = userRes.account;
  154. this.modalForm = this.$objAssign(this.modalForm, this.user);
  155. this.modalForm.courseId = this.user.courseId
  156. ? this.modalForm.courseId.split(",")
  157. : [];
  158. this.getCourseList();
  159. },
  160. async getCourseList() {
  161. const data = await courseList();
  162. this.courses = data.records.map(course => {
  163. return {
  164. id: course.id,
  165. name: `${course.courseName}(${course.courseCode})`
  166. };
  167. });
  168. },
  169. async submit(name) {
  170. const valid = await this.$refs[name].validate().catch(() => {});
  171. if (!valid) return;
  172. if (this.isSubmit) return;
  173. this.isSubmit = true;
  174. const datas = { ...this.modalForm };
  175. if (datas.roleCode !== "QUESTION_TEACHER") delete datas.courseId;
  176. const data = await updateUser(datas).catch(() => {});
  177. this.isSubmit = false;
  178. if (!data) return;
  179. this.$message.success("修改成功!");
  180. // 自己把自己的角色改了之后要重新登录,重新获取权限
  181. if (
  182. this.user.roleCode !== this.modalForm.roleCode &&
  183. this.$ls.get("user").id === this.user.id
  184. ) {
  185. await logout(this.$ls.get("user", { id: "" }).id);
  186. this.$ls.clear();
  187. this.$router.push({ name: "Login" });
  188. this.$message.info("您的权限已经变更,请重新登录系统!");
  189. }
  190. }
  191. }
  192. };
  193. </script>