seach.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <script setup>
  2. import { ref, reactive, onMounted } from "vue";
  3. import { useRoute } from "vue-router";
  4. import { getUserListObjectByModelId, getAssessmentIndName } from "@/api/draw";
  5. const props = defineProps({
  6. // 行数
  7. activeName: {
  8. type: String,
  9. default: "0"
  10. }
  11. });
  12. const $emit = defineEmits(["handClick"]);
  13. const dataList = reactive({
  14. teplist: [],
  15. personList: [],
  16. magList: [],
  17. userList: [],
  18. params: {
  19. assessmentId: "",
  20. assessmentModelId: "",
  21. deptCode: "",
  22. assessmentObjectId: "",
  23. indName: ""
  24. }
  25. });
  26. // 部门
  27. const postListTreeApi = async selectedItem => {
  28. const { data, code } = await getUserListObjectByModelId({
  29. type: 2,
  30. assessmentId: selectedItem.assessmentId,
  31. modelId: selectedItem.assessmentModelId
  32. });
  33. if (code === 200) {
  34. dataList.userList = data;
  35. }
  36. };
  37. // 指标
  38. const route = useRoute();
  39. const assessmentList = ref([]);
  40. const getAssessmentIndNameApi = async () => {
  41. const { data, code } = await getAssessmentIndName({
  42. assessmentId: route.query.id
  43. });
  44. if (code === 200) {
  45. assessmentList.value = data;
  46. }
  47. };
  48. onMounted(() => {
  49. dataList.params.assessmentId = route.query.id;
  50. dataList.params.assessmentModelId = route.query.mid;
  51. init.assessmentName = route.query.name;
  52. init.assessmentModelName = route.query.mname;
  53. postListTreeApi({
  54. assessmentId: route.query.id,
  55. assessmentModelId: route.query.mid
  56. });
  57. getAssessmentIndNameApi();
  58. });
  59. // -----------------------------------
  60. const init = reactive({
  61. assessmentName: "",
  62. assessmentModelName: "",
  63. deptName: "",
  64. assessmentObjectName: "",
  65. dimensionName: ""
  66. });
  67. const handClickInit3 = value => {
  68. if (value) {
  69. const selectedItem = dataList.userList.find(
  70. item => item.assessmentObjectId === value
  71. );
  72. init.assessmentObjectName = selectedItem.assessmentObjectName;
  73. }
  74. $emit(
  75. "handClick",
  76. {
  77. ...dataList.params,
  78. ...init
  79. },
  80. 1
  81. );
  82. };
  83. const handClickInit5 = value => {
  84. $emit(
  85. "handClick",
  86. {
  87. ...dataList.params,
  88. ...init,
  89. indName: value
  90. },
  91. "1"
  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 v-if="props.activeName === '0'" class="flex mr-2">
  100. <div class="text-sm leading-8 mr-3">医疗组</div>
  101. <el-select
  102. v-model="dataList.params.assessmentObjectId"
  103. clearable
  104. filterable
  105. placeholder="请选择"
  106. style="width: 200px"
  107. @change="handClickInit3"
  108. >
  109. <el-option
  110. v-for="item in dataList.userList"
  111. :key="item.assessmentObjectId"
  112. :label="item.assessmentObjectName"
  113. :value="item.assessmentObjectId"
  114. />
  115. </el-select>
  116. </div>
  117. <div v-else class="flex mr-2">
  118. <div class="text-sm leading-8 mr-3">指标</div>
  119. <el-select
  120. v-model="dataList.params.indName"
  121. clearable
  122. filterable
  123. placeholder="请选择"
  124. style="width: 200px"
  125. @change="handClickInit5"
  126. >
  127. <el-option
  128. v-for="(item, idx) in assessmentList"
  129. :key="idx"
  130. :label="item"
  131. :value="item"
  132. />
  133. </el-select>
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. </template>