<script setup lang="ts"> import { ref, reactive } from "vue"; import { ElMessageBox, ElMessage } from "element-plus"; import { postAddUserGroup } from "@/api/userGroup"; import { postAssignmentUser } from "@/api/userSetting"; import { postPageRole } from "@/api/roles"; const dialogVisibleAdd = ref(false); const formRef = ref(); const emit = defineEmits(["handleClick"]); const dialogTitle = ref(""); const dialogForm = ref(false); const form = reactive({ groupName: "", hospitalCode: "", leaderCode: "" }); const rolesList = reactive({ list: [], rolesName: "", assignmentParams: { sourceCodes: [], targetCodes: [], linkAction: "link", correlatedModel: "groupRole" } }); const postAddUserGroupApi = async () => { const { code, msg } = dialogTitle.value == "新建用户组" ? await postAddUserGroup(form) : await postAssignmentUser(rolesList.assignmentParams); if (code === 200 && dialogTitle.value == "新建用户组") { emit("handleClick"); dialogVisibleAdd.value = false; ElMessage({ message: "添加成功", type: "success" }); } else if (code == 200) { dialogVisibleAdd.value = false; ElMessage({ message: "添加成功", type: "success" }); } else { ElMessage.error(msg); } }; const handleClose = () => { dialogVisibleAdd.value = false; formRef.value.clearValidate(); // 清除验证错误 formRef.value.resetFields(); // 重置表单字段 }; // 角色数据 const rolesData = async () => { const { code, data } = await postPageRole({ pageNumber: 1, pageSize: 100 }); if (code === 200) { rolesList.list = data.records; } }; const changeRoles = () => { // console.log(rolesList.rolesName); rolesList.assignmentParams.sourceCodes = []; rolesList.assignmentParams.sourceCodes.push(rolesList.rolesName); }; // 添加部门保存 const saveDepartment = () => { formRef.value.validate(valid => { if (valid) { postAddUserGroupApi(); } }); }; const open = item => { if (item) { dialogTitle.value = "配置角色"; // console.log("部门", item); rolesList.assignmentParams.targetCodes = []; rolesList.assignmentParams.targetCodes.push(item.hospitalCode); form.groupName = item.groupName; dialogForm.value = false; } else { Object.assign(form, { groupName: "", hospitalCode: "", leaderCode: "" }); dialogTitle.value = "新建用户组"; form.groupName = ""; dialogForm.value = true; } dialogVisibleAdd.value = true; rolesData(); }; defineExpose({ open }); </script> <template> <div> <el-dialog v-model="dialogVisibleAdd" :title="dialogTitle" width="500" :before-close="handleClose" > <el-form v-if="dialogForm" ref="formRef" :model="form" label-width="auto" style="max-width: 600px" > <el-form-item prop="groupName" label="用户组名称" :rules="[ { required: true, message: '请填写用户组名称', trigger: 'blur' } ]" > <el-input v-model="form.groupName" placeholder="请输入" /> </el-form-item> <el-form-item label="用户组编号"> <el-input v-model="form.hospitalCode" placeholder="请输入" /> </el-form-item> <el-form-item v-if="dialogTitle !== '新建用户组'" label="用户组负责人"> <el-select v-model="form.leaderCode" placeholder="请选择"> <el-option v-for="(item, index) in rolesList.list" :key="index" :label="item.roleName" :value="item.roleCode" /> </el-select> </el-form-item> </el-form> <el-form v-else :model="form" label-width="auto" style="max-width: 600px"> <el-form-item label="配置角色"> <el-select v-model="rolesList.rolesName" placeholder="请选择" @change="changeRoles" > <el-option v-for="(item, index) in rolesList.list" :key="index" :label="item.roleName" :value="item.roleCode" /> </el-select> </el-form-item> </el-form> <template #footer> <div class="dialog-footer"> <el-button @click="handleClose">取消</el-button> <el-button type="primary" @click="saveDepartment"> 确认 </el-button> </div> </template> </el-dialog> </div> </template>