123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <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>
|