seach.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <script setup>
  2. import { ref, reactive } from "vue";
  3. import { getTemplateInfoList } from "@/api/templateInfo";
  4. import { userPageWhitOrganization } from "@/api/userSetting";
  5. import { getAssessmentPageList } from "@/api/manage";
  6. import { postListTree } from "@/api/department";
  7. import { postPageGroup } from "@/api/userGroup";
  8. import {
  9. getAssessmentList,
  10. getModelListByAssessmentId,
  11. getUserListObjectByModelId
  12. } from "@/api/draw";
  13. const $emit = defineEmits(["handClick"]);
  14. const dataList = reactive({
  15. teplist: [],
  16. userList: [],
  17. magList: [],
  18. params: {
  19. assessmentId: "",
  20. assessmentModelId: "",
  21. deptCode: "",
  22. assessmentObjectId: ""
  23. }
  24. });
  25. // 考核模板
  26. const getTemplateInfoListApi = async selectedItem => {
  27. const { data, code } = await getModelListByAssessmentId(selectedItem);
  28. if (code === 200) {
  29. dataList.teplist = data;
  30. }
  31. };
  32. getTemplateInfoListApi();
  33. // 考核活动
  34. const getAssessmentPageListApi = async () => {
  35. const { data, code } = await getAssessmentList({
  36. type: 2
  37. });
  38. if (code === 200) {
  39. dataList.magList = data;
  40. }
  41. console.log("await", data);
  42. };
  43. getAssessmentPageListApi();
  44. // 用户组-用户组-医疗组
  45. const postPageGroupApi = async () => {
  46. const { data, code } = await postPageGroup({
  47. pageNumber: 1,
  48. pageSize: 1000
  49. });
  50. if (code === 200) {
  51. dataList.userList = data.records;
  52. }
  53. };
  54. postPageGroupApi();
  55. // -----------------------
  56. const init = reactive({
  57. assessmentName: "",
  58. assessmentModelName: "",
  59. deptName: "",
  60. assessmentObjectName: "",
  61. dimensionName: ""
  62. });
  63. const handClickInit1 = value => {
  64. if (value) {
  65. const selectedItem = dataList.magList.find(item => item.id === value);
  66. init.assessmentName = selectedItem.name;
  67. getTemplateInfoListApi(selectedItem);
  68. }
  69. $emit("handClick", {
  70. ...dataList.params,
  71. ...init
  72. });
  73. };
  74. const handClickInit2 = value => {
  75. if (value) {
  76. const selectedItem = dataList.teplist.find(
  77. item => item.assessmentModelId === value
  78. );
  79. init.assessmentModelName = selectedItem.assessmentModelName;
  80. }
  81. $emit("handClick", {
  82. ...dataList.params,
  83. ...init
  84. });
  85. };
  86. const handClickInit3 = value => {
  87. if (value) {
  88. const selectedItem = dataList.userList.find(
  89. item => item.groupCode === value
  90. );
  91. init.deptName = selectedItem.groupName;
  92. }
  93. $emit("handClick", {
  94. ...dataList.params,
  95. ...init
  96. });
  97. };
  98. </script>
  99. <template>
  100. <div class="w-full">
  101. <div class="mb-2 flex gap-2 justify-between flex-wrap">
  102. <div class="w-[100%] flex mt-2">
  103. <div class="flex mr-2">
  104. <div class="text-sm leading-8 mr-3">考核活动</div>
  105. <el-select
  106. v-model="dataList.params.assessmentId"
  107. clearable
  108. filterable
  109. placeholder="请选择"
  110. style="width: 200px"
  111. @change="handClickInit1"
  112. >
  113. <el-option
  114. v-for="item in dataList.magList"
  115. :key="item.id"
  116. :label="item.name"
  117. :value="item.id"
  118. />
  119. </el-select>
  120. </div>
  121. <div class="flex mr-2">
  122. <div class="text-sm leading-8 mr-3">考核模板</div>
  123. <el-select
  124. v-model="dataList.params.assessmentModelId"
  125. clearable
  126. filterable
  127. placeholder="请选择"
  128. style="width: 200px"
  129. @change="handClickInit2"
  130. >
  131. <el-option
  132. v-for="item in dataList.teplist"
  133. :key="item.assessmentModelId"
  134. :label="item.assessmentModelName"
  135. :value="item.assessmentModelId"
  136. />
  137. </el-select>
  138. </div>
  139. <div class="flex mr-2">
  140. <div class="text-sm leading-8 mr-3">医疗组</div>
  141. <el-select
  142. v-model="dataList.params.deptCode"
  143. clearable
  144. filterable
  145. placeholder="请选择"
  146. style="width: 200px"
  147. @change="handClickInit3"
  148. >
  149. <el-option
  150. v-for="item in dataList.userList"
  151. :key="item.groupCode"
  152. :label="item.groupName"
  153. :value="item.groupCode"
  154. />
  155. </el-select>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. </template>