editPerson.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <script setup lang="ts">
  2. import { ref, reactive } from "vue";
  3. import { ElMessageBox, ElMessage } from "element-plus";
  4. import type { DrawerProps, FormItemProps, FormProps } from "element-plus";
  5. import { postUpdateGroupByCode } from "@/api/userGroup";
  6. import { getLeaderList, postOrganizationUserPage } from "@/api/userSetting";
  7. const drawer = ref(false);
  8. const formRef = ref();
  9. const emit = defineEmits(["handleClick"]);
  10. const disabledValue = ref(true);
  11. const direction = ref<DrawerProps["direction"]>("rtl");
  12. const formLabelAlign = reactive({
  13. groupName: "",
  14. leaderCode: "",
  15. groupCode: "",
  16. hospitalCode: ""
  17. });
  18. const postUpdateGroupByCodeApi = async () => {
  19. const { code } = await postUpdateGroupByCode(formLabelAlign);
  20. if (code === 200) {
  21. emit("handleClick");
  22. ElMessage({
  23. message: "保存成功",
  24. type: "success"
  25. });
  26. }
  27. };
  28. const handleClose = (done: () => void) => {
  29. // ElMessageBox.confirm("配置项未保存,确认关闭", {
  30. // type: "warning"
  31. // }).then(() => {
  32. // });
  33. formRef.value.clearValidate(); // 清除验证错误
  34. formRef.value.resetFields(); // 重置表单字段
  35. drawer.value = false;
  36. disabledValue.value = true;
  37. editShow.value = true;
  38. };
  39. function cancelClick() {
  40. formRef.value.validate(valid => {
  41. if (valid) {
  42. disabledValue.value = true;
  43. editShow.value = true;
  44. }
  45. });
  46. // drawer.value = false;
  47. }
  48. function confirmClick() {
  49. formRef.value.validate(valid => {
  50. if (valid) {
  51. disabledValue.value = true;
  52. editShow.value = true;
  53. drawer.value = !drawer.value;
  54. postUpdateGroupByCodeApi();
  55. }
  56. });
  57. }
  58. // 获取负责人
  59. const leader = ref([]);
  60. const postOrganizationUserPagetApi = async groupCode => {
  61. const { code, data } = await postOrganizationUserPage({
  62. pageNumber: 1,
  63. pageSize: 1000,
  64. organizationCode: groupCode,
  65. organizationType: "group",
  66. realName: ""
  67. });
  68. if (code == 200) {
  69. leader.value = data.records;
  70. }
  71. };
  72. const open = row => {
  73. if (row) {
  74. formLabelAlign.groupName = row.groupName;
  75. formLabelAlign.leaderCode = row.leaderCode;
  76. formLabelAlign.groupCode = row.groupCode;
  77. formLabelAlign.hospitalCode = row.hospitalCode;
  78. }
  79. drawer.value = true;
  80. postOrganizationUserPagetApi(row.groupCode);
  81. };
  82. const editShow = ref(true);
  83. // 编辑
  84. const editClick = () => {
  85. console.log("11111", formLabelAlign);
  86. editShow.value = false;
  87. disabledValue.value = false;
  88. };
  89. defineExpose({
  90. open
  91. });
  92. const timer = ref("");
  93. </script>
  94. <template>
  95. <div>
  96. <el-drawer
  97. v-model="drawer"
  98. :direction="direction"
  99. :before-close="handleClose"
  100. >
  101. <template #header>
  102. <h4>用户组详情</h4>
  103. </template>
  104. <template #default>
  105. <div>
  106. <el-form
  107. ref="formRef"
  108. label-position="top"
  109. label-width="auto"
  110. :model="formLabelAlign"
  111. >
  112. <el-form-item label="用户组名称" label-position="top">
  113. <el-input
  114. v-model="formLabelAlign.groupName"
  115. :disabled="disabledValue"
  116. />
  117. </el-form-item>
  118. <el-form-item label="用户组编号" label-position="top">
  119. <el-input
  120. v-model="formLabelAlign.hospitalCode"
  121. :disabled="disabledValue"
  122. />
  123. </el-form-item>
  124. <el-form-item label="用户组负责人" label-position="top">
  125. <el-select
  126. v-model="formLabelAlign.leaderCode"
  127. :disabled="disabledValue"
  128. placeholder="请选择"
  129. >
  130. <el-option
  131. v-for="item in leader"
  132. :key="item.userCode"
  133. :label="item.realName"
  134. :value="item.userCode"
  135. />
  136. </el-select>
  137. </el-form-item>
  138. </el-form>
  139. </div>
  140. </template>
  141. <template #footer>
  142. <el-button v-if="editShow" type="primary" @click="editClick"
  143. >编辑</el-button
  144. >
  145. <div v-else>
  146. <el-button @click="cancelClick">取消</el-button>
  147. <el-button type="primary" @click="confirmClick">确认</el-button>
  148. </div>
  149. </template>
  150. </el-drawer>
  151. </div>
  152. </template>