seach.vue 4.0 KB

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