seach.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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. leaderList: [],
  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: 3,
  30. assessmentId: selectedItem.assessmentId,
  31. modelId: selectedItem.assessmentModelId
  32. });
  33. if (code === 200) {
  34. dataList.leaderList = data;
  35. data.map(item => {
  36. if (route.query.uname === item.assessmentObjectName) {
  37. dataList.params.assessmentObjectId = item.assessmentObjectId;
  38. }
  39. });
  40. }
  41. };
  42. // 指标
  43. const route = useRoute();
  44. const assessmentList = ref([]);
  45. const getAssessmentIndNameApi = async () => {
  46. const { data, code } = await getAssessmentIndName({
  47. assessmentId: route.query.id
  48. });
  49. if (code === 200) {
  50. assessmentList.value = data;
  51. }
  52. };
  53. onMounted(async () => {
  54. dataList.params.assessmentId = route.query.id;
  55. dataList.params.assessmentModelId = route.query.mid;
  56. init.assessmentName = route.query.name;
  57. init.assessmentModelName = route.query.mname;
  58. await postListTreeApi({
  59. assessmentId: route.query.id,
  60. assessmentModelId: route.query.mid
  61. });
  62. getAssessmentIndNameApi();
  63. handClickInit3("init");
  64. });
  65. // -----------------------------------
  66. const init = reactive({
  67. assessmentName: "",
  68. assessmentModelName: "",
  69. deptName: "",
  70. assessmentObjectName: "",
  71. dimensionName: ""
  72. });
  73. const handClickInit3 = value => {
  74. if (value) {
  75. if (value === "init") {
  76. init.assessmentObjectName = route.query.uname || "";
  77. } else {
  78. const selectedItem = dataList.leaderList.find(
  79. item => item.assessmentObjectId === value
  80. );
  81. init.assessmentObjectName = selectedItem.assessmentObjectName;
  82. }
  83. } else {
  84. init.assessmentObjectName = "";
  85. }
  86. $emit(
  87. "handClick",
  88. {
  89. ...dataList.params,
  90. ...init
  91. },
  92. 1
  93. );
  94. };
  95. const handClickInit5 = value => {
  96. $emit(
  97. "handClick",
  98. {
  99. ...dataList.params,
  100. ...init,
  101. indName: value
  102. },
  103. "1"
  104. );
  105. };
  106. </script>
  107. <template>
  108. <div class="w-full">
  109. <div class="mb-2 flex gap-2 justify-between flex-wrap">
  110. <div class="w-[100%] flex mt-2">
  111. <div v-if="props.activeName === '0'" class="flex mr-2">
  112. <div class="text-sm leading-8 mr-3">科主任</div>
  113. <el-select
  114. v-model="dataList.params.assessmentObjectId"
  115. clearable
  116. filterable
  117. placeholder="请选择"
  118. style="width: 200px"
  119. @change="handClickInit3"
  120. >
  121. <el-option
  122. v-for="item in dataList.leaderList"
  123. :key="item.assessmentObjectId"
  124. :label="item.assessmentObjectName"
  125. :value="item.assessmentObjectId"
  126. />
  127. </el-select>
  128. </div>
  129. <div v-else class="flex mr-2">
  130. <div class="text-sm leading-8 mr-3">指标</div>
  131. <el-select
  132. v-model="dataList.params.indName"
  133. clearable
  134. filterable
  135. placeholder="请选择"
  136. style="width: 200px"
  137. @change="handClickInit5"
  138. >
  139. <el-option
  140. v-for="(item, idx) in assessmentList"
  141. :key="idx"
  142. :label="item"
  143. :value="item"
  144. />
  145. </el-select>
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. </template>