seachOld.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  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. import { useRouter, useRoute } from "vue-router";
  14. const $emit = defineEmits(["handClick"]);
  15. const dataList = reactive({
  16. teplist: [],
  17. userList: [],
  18. magList: [],
  19. params: {
  20. assessmentId: "",
  21. assessmentModelId: "",
  22. deptCode: "",
  23. assessmentObjectId: ""
  24. }
  25. });
  26. // 考核模板
  27. const getTemplateInfoListApi = async selectedItem => {
  28. const { data, code } = await getModelListByAssessmentId(selectedItem);
  29. if (code === 200) {
  30. dataList.teplist = data;
  31. }
  32. };
  33. // getTemplateInfoListApi();
  34. // 考核活动
  35. // const getAssessmentPageListApi = async () => {
  36. // const { data, code } = await getAssessmentList({
  37. // type: 2
  38. // });
  39. // if (code === 200) {
  40. // dataList.magList = data;
  41. // }
  42. // console.log("await", data);
  43. // };
  44. // getAssessmentPageListApi();
  45. // 用户组-用户组-医疗组
  46. const postPageGroupApi = async selectedItem => {
  47. console.log("selectedItem", selectedItem);
  48. const { data, code } = await getUserListObjectByModelId({
  49. modelId: selectedItem.assessmentModelId,
  50. assessmentId: selectedItem.assessmentId,
  51. type: 2
  52. });
  53. if (code === 200) {
  54. dataList.userList = data;
  55. }
  56. };
  57. // -----------------------
  58. const init = reactive({
  59. assessmentName: "",
  60. assessmentModelName: "",
  61. deptName: "",
  62. assessmentObjectName: "",
  63. dimensionName: ""
  64. });
  65. const handClickInit1 = value => {
  66. if (value) {
  67. const selectedItem = dataList.magList.find(item => item.id === value);
  68. init.assessmentName = selectedItem.name;
  69. localStorage.setItem("fileName", selectedItem.name);
  70. getTemplateInfoListApi(selectedItem);
  71. }
  72. Object.assign(dataList.params, {
  73. assessmentModelId: "",
  74. assessmentObjectId: ""
  75. });
  76. $emit(
  77. "handClick",
  78. {
  79. ...dataList.params,
  80. ...init
  81. },
  82. "0"
  83. );
  84. };
  85. const handClickInit2 = value => {
  86. if (value) {
  87. const selectedItem = dataList.teplist.find(
  88. item => item.assessmentModelId === value
  89. );
  90. init.assessmentModelName = selectedItem.assessmentModelName;
  91. postPageGroupApi(selectedItem);
  92. }
  93. Object.assign(dataList.params, {
  94. assessmentObjectId: ""
  95. });
  96. $emit(
  97. "handClick",
  98. {
  99. ...dataList.params,
  100. ...init
  101. },
  102. "0"
  103. );
  104. };
  105. const handClickInit3 = value => {
  106. if (value) {
  107. const selectedItem = dataList.userList.find(
  108. item => item.assessmentObjectId === value
  109. );
  110. init.assessmentObjectName = selectedItem.assessmentObjectName;
  111. }
  112. $emit(
  113. "handClick",
  114. {
  115. ...dataList.params,
  116. ...init
  117. },
  118. "1"
  119. );
  120. };
  121. const route = useRoute();
  122. const getSearchFrom = () => {
  123. if (Object.keys(route.query).length > 0) {
  124. const {
  125. assessmentId,
  126. assessmentModelId,
  127. assessmentObjectId,
  128. assessmentName,
  129. assessmentModelName,
  130. assessmentObjectName
  131. } = route.query;
  132. const obj = ["assessmentId", "assessmentModelId", "assessmentObjectId"];
  133. const initObj = [
  134. "assessmentName",
  135. "assessmentModelName",
  136. "assessmentObjectName"
  137. ];
  138. obj.map(item => {
  139. dataList.params[item] = route.query[item];
  140. });
  141. initObj.map(item => {
  142. init[item] = route.query[item];
  143. });
  144. const selectedItem = dataList.magList.find(
  145. item => item.id === assessmentId
  146. );
  147. getTemplateInfoListApi(selectedItem);
  148. setTimeout(() => {
  149. const selectedItems = dataList.teplist.find(
  150. item => item.assessmentModelId === assessmentModelId
  151. );
  152. postPageGroupApi(selectedItems);
  153. setTimeout(() => {
  154. $emit(
  155. "handClick",
  156. {
  157. ...dataList.params,
  158. ...init
  159. },
  160. 1
  161. );
  162. }, 100);
  163. }, 300);
  164. }
  165. };
  166. // 考核活动
  167. const getAssessmentPageListApi = async () => {
  168. const { data, code } = await getAssessmentList({
  169. type: 2
  170. });
  171. if (code === 200) {
  172. dataList.magList = data;
  173. getSearchFrom();
  174. }
  175. };
  176. getAssessmentPageListApi();
  177. // 清除条件
  178. const handClickClear1 = () => {
  179. dataList.teplist = [];
  180. dataList.userList = [];
  181. };
  182. const handClickClear2 = () => {
  183. dataList.userList = [];
  184. };
  185. </script>
  186. <template>
  187. <div class="w-full">
  188. <div class="mb-2 flex gap-2 justify-between flex-wrap">
  189. <div class="w-[100%] flex mt-2">
  190. <div class="flex mr-2">
  191. <div class="text-sm leading-8 mr-3">考核活动</div>
  192. <el-select
  193. v-model="dataList.params.assessmentId"
  194. clearable
  195. filterable
  196. placeholder="请选择"
  197. style="width: 200px"
  198. @change="handClickInit1"
  199. @clear="handClickClear1"
  200. >
  201. <el-option
  202. v-for="item in dataList.magList"
  203. :key="item.id"
  204. :label="item.name"
  205. :value="item.id"
  206. />
  207. </el-select>
  208. </div>
  209. <div class="flex mr-2">
  210. <div class="text-sm leading-8 mr-3">考核模板</div>
  211. <el-select
  212. v-model="dataList.params.assessmentModelId"
  213. clearable
  214. filterable
  215. placeholder="请选择"
  216. style="width: 200px"
  217. @change="handClickInit2"
  218. @clear="handClickClear2"
  219. >
  220. <el-option
  221. v-for="item in dataList.teplist"
  222. :key="item.assessmentModelId"
  223. :label="item.assessmentModelName"
  224. :value="item.assessmentModelId"
  225. />
  226. </el-select>
  227. </div>
  228. <div class="flex mr-2">
  229. <div class="text-sm leading-8 mr-3">医疗组</div>
  230. <el-select
  231. v-model="dataList.params.assessmentObjectId"
  232. clearable
  233. filterable
  234. placeholder="请选择"
  235. style="width: 200px"
  236. @change="handClickInit3"
  237. >
  238. <el-option
  239. v-for="item in dataList.userList"
  240. :key="item.assessmentObjectId"
  241. :label="item.assessmentObjectName"
  242. :value="item.assessmentObjectId"
  243. />
  244. </el-select>
  245. </div>
  246. </div>
  247. </div>
  248. </div>
  249. </template>