seachOld.vue 6.7 KB

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