addUsers.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <script setup lang="ts">
  2. import { ref, reactive } from "vue";
  3. import { ElMessageBox, ElMessage } from "element-plus";
  4. import { postAddUserGroup } from "@/api/userGroup";
  5. import { postAssignmentUser } from "@/api/userSetting";
  6. import { postPageRole } from "@/api/roles";
  7. const dialogVisibleAdd = ref(false);
  8. const formRef = ref();
  9. const emit = defineEmits(["handleClick"]);
  10. const dialogTitle = ref("");
  11. const dialogForm = ref(false);
  12. const form = reactive({
  13. groupName: "",
  14. hospitalCode: "",
  15. leaderCode: ""
  16. });
  17. const rolesList = reactive({
  18. list: [],
  19. rolesName: "",
  20. assignmentParams: {
  21. sourceCodes: [],
  22. targetCodes: [],
  23. linkAction: "link",
  24. correlatedModel: "groupRole"
  25. }
  26. });
  27. const postAddUserGroupApi = async () => {
  28. const { code, msg } =
  29. dialogTitle.value == "新建用户组"
  30. ? await postAddUserGroup(form)
  31. : await postAssignmentUser(rolesList.assignmentParams);
  32. if (code === 200 && dialogTitle.value == "新建用户组") {
  33. emit("handleClick");
  34. dialogVisibleAdd.value = false;
  35. ElMessage({
  36. message: "添加成功",
  37. type: "success"
  38. });
  39. } else if (code == 200) {
  40. dialogVisibleAdd.value = false;
  41. ElMessage({
  42. message: "添加成功",
  43. type: "success"
  44. });
  45. } else {
  46. ElMessage.error(msg);
  47. }
  48. };
  49. const handleClose = () => {
  50. dialogVisibleAdd.value = false;
  51. formRef.value.clearValidate(); // 清除验证错误
  52. formRef.value.resetFields(); // 重置表单字段
  53. };
  54. // 角色数据
  55. const rolesData = async () => {
  56. const { code, data } = await postPageRole({
  57. pageNumber: 1,
  58. pageSize: 100
  59. });
  60. if (code === 200) {
  61. rolesList.list = data.records;
  62. }
  63. };
  64. const changeRoles = () => {
  65. // console.log(rolesList.rolesName);
  66. rolesList.assignmentParams.sourceCodes = [];
  67. rolesList.assignmentParams.sourceCodes.push(rolesList.rolesName);
  68. };
  69. // 添加部门保存
  70. const saveDepartment = () => {
  71. formRef.value.validate(valid => {
  72. if (valid) {
  73. postAddUserGroupApi();
  74. }
  75. });
  76. };
  77. const open = item => {
  78. if (item) {
  79. dialogTitle.value = "配置角色";
  80. // console.log("部门", item);
  81. rolesList.assignmentParams.targetCodes = [];
  82. rolesList.assignmentParams.targetCodes.push(item.hospitalCode);
  83. form.groupName = item.groupName;
  84. dialogForm.value = false;
  85. } else {
  86. Object.assign(form, {
  87. groupName: "",
  88. hospitalCode: "",
  89. leaderCode: ""
  90. });
  91. dialogTitle.value = "新建用户组";
  92. form.groupName = "";
  93. dialogForm.value = true;
  94. }
  95. dialogVisibleAdd.value = true;
  96. rolesData();
  97. };
  98. defineExpose({
  99. open
  100. });
  101. </script>
  102. <template>
  103. <div>
  104. <el-dialog
  105. v-model="dialogVisibleAdd"
  106. :title="dialogTitle"
  107. width="500"
  108. :before-close="handleClose"
  109. >
  110. <el-form
  111. v-if="dialogForm"
  112. ref="formRef"
  113. :model="form"
  114. label-width="auto"
  115. style="max-width: 600px"
  116. >
  117. <el-form-item
  118. prop="groupName"
  119. label="用户组名称"
  120. :rules="[
  121. {
  122. required: true,
  123. message: '请填写用户组名称',
  124. trigger: 'blur'
  125. }
  126. ]"
  127. >
  128. <el-input v-model="form.groupName" placeholder="请输入" />
  129. </el-form-item>
  130. <el-form-item label="用户组编号">
  131. <el-input v-model="form.hospitalCode" placeholder="请输入" />
  132. </el-form-item>
  133. <el-form-item v-if="dialogTitle !== '新建用户组'" label="用户组负责人">
  134. <el-select v-model="form.leaderCode" placeholder="请选择">
  135. <el-option
  136. v-for="(item, index) in rolesList.list"
  137. :key="index"
  138. :label="item.roleName"
  139. :value="item.roleCode"
  140. />
  141. </el-select>
  142. </el-form-item>
  143. </el-form>
  144. <el-form v-else :model="form" label-width="auto" style="max-width: 600px">
  145. <el-form-item label="配置角色">
  146. <el-select
  147. v-model="rolesList.rolesName"
  148. placeholder="请选择"
  149. @change="changeRoles"
  150. >
  151. <el-option
  152. v-for="(item, index) in rolesList.list"
  153. :key="index"
  154. :label="item.roleName"
  155. :value="item.roleCode"
  156. />
  157. </el-select>
  158. </el-form-item>
  159. </el-form>
  160. <template #footer>
  161. <div class="dialog-footer">
  162. <el-button @click="handleClose">取消</el-button>
  163. <el-button type="primary" @click="saveDepartment"> 确认 </el-button>
  164. </div>
  165. </template>
  166. </el-dialog>
  167. </div>
  168. </template>