PlanReport.vue 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693
  1. <template>
  2. <div>
  3. <el-dialog
  4. :visible.sync="dialogVisible"
  5. :close-on-click-modal="false"
  6. width="90%"
  7. style="border-radius: 40px"
  8. >
  9. <div slot="title">
  10. <p
  11. style="
  12. text-align: center;
  13. font-size: 20px;
  14. margin-bottom: 20px;
  15. font-weight: 700;
  16. "
  17. >
  18. {{ planName }}报告
  19. </p>
  20. <div class="report_ge_title" style="margin-bottom: 20px">
  21. <div class="blue_t"></div>
  22. <div class="com">完成情况</div>
  23. </div>
  24. <div style="display: flex">
  25. <div class="chart_wrap" style="flex: 4">
  26. <div class="report_top_bingBo">
  27. <div class="isComStyle">
  28. 总人数:&nbsp;&nbsp;{{ this.completeNum + this.unComplete }}人
  29. </div>
  30. </div>
  31. <div class="report_top_bingBo" style="margin-top: 20px">
  32. <div class="isComStyle">
  33. 已完成<span>{{ this.completeNum }}人</span>
  34. </div>
  35. <div class="isUnComStyle">
  36. 未完成<span>{{ this.unComplete }}人</span>
  37. </div>
  38. </div>
  39. <BingChart
  40. :options="options1"
  41. chartId="myPieChart1"
  42. chartName="完成度"
  43. v-show="this.unComplete != 0"
  44. />
  45. </div>
  46. <!-- v-show="this.unComplete != 0" -->
  47. <div style="flex: 8" class="report_top_right_out" v-show="this.unComplete != 0">
  48. <div class="report_top_right">
  49. <div style="font-size: 16px; letter-spacing: 1px">未完成人员列表</div>
  50. <div></div>
  51. </div>
  52. <el-table
  53. :data="complateTableData"
  54. :row-style="{ height: '0px', borderRadius: '20px' }"
  55. :cell-style="{ padding: '5px' }"
  56. :header-cell-style="{ background: '#F8F8F8', color: '#606266' }"
  57. >
  58. <el-table-column
  59. show-overflow-tooltip
  60. prop="userName"
  61. label="姓名"
  62. align="center"
  63. width=""
  64. >
  65. </el-table-column>
  66. <el-table-column
  67. prop="userNo"
  68. v-if="planType == '0'"
  69. label="学号"
  70. align="center"
  71. width=""
  72. >
  73. </el-table-column>
  74. <el-table-column
  75. prop="userNo"
  76. v-if="planType == '1'"
  77. label="编号"
  78. align="center"
  79. width=""
  80. >
  81. </el-table-column>
  82. <el-table-column
  83. prop="orgName"
  84. label="所属组织架构"
  85. align="center"
  86. width=""
  87. >
  88. </el-table-column>
  89. </el-table>
  90. <el-pagination
  91. class="pag_class"
  92. background
  93. @current-change="complateHandleCurrentChange"
  94. :current-page.sync="complatePageNum"
  95. layout="total, prev, pager, next"
  96. :page-size="complatePageSize"
  97. :page-sizes="[10, 20, 50, 100]"
  98. :total="complateTotal"
  99. >
  100. </el-pagination>
  101. </div>
  102. <div
  103. style="flex: 4; display: flex; flex-direction: column; align-items: center"
  104. class="report_top_right_out"
  105. v-show="this.unComplete == 0"
  106. >
  107. <img style="width: 60%" src="../assets/img/report/task.png" />
  108. <div style="text-align: center; margin-top: 20px; font-size: 16px">
  109. 全部人员已完成测试
  110. </div>
  111. </div>
  112. <div style="flex: 4" class="report_top_right_out" v-show="this.unComplete == 0">
  113. &nbsp;
  114. </div>
  115. </div>
  116. <div class="report_ge_title" style="margin-top: 40px; margin-bottom: 20px">
  117. <div class="blue_t"></div>
  118. <div class="com">已完成人员测评情况</div>
  119. </div>
  120. <div style="display: flex">
  121. <div class="chart_wrap" style="flex: 4">
  122. <div class="report_top_bingBo">
  123. <div class="isComStyle">
  124. 已完成人数:&nbsp;&nbsp;{{ this.completeNum }}人
  125. </div>
  126. </div>
  127. <div class="report_top_bingBo" style="margin-top: 20px">
  128. <div class="isComStyle">
  129. 心理健康<span>{{ this.completeNum - this.abnormalNum }}人</span>
  130. </div>
  131. <div class="isUnComStyle">
  132. 心理异常<span>{{ this.abnormalNum }}人</span>
  133. </div>
  134. </div>
  135. <BingChart :options="options6" chartId="myPieChart6" chartName="完成度" />
  136. </div>
  137. <div style="flex: 8; margin-left: 20px" class="report_top_right_out">
  138. <div class="report_top_bingBo">
  139. <div class="isComStyle" style="font-size: 16px; text-align: center">
  140. 心理异常人次统计
  141. </div>
  142. </div>
  143. <div style="height: 100%; width: 100%" ref="echarts_zhu"></div>
  144. </div>
  145. </div>
  146. <div class="table-content">
  147. <div
  148. class="radio_group_style"
  149. style="display: flex; justify-content: space-between; align-items: center"
  150. >
  151. <el-radio-group
  152. v-model="userType"
  153. style="margin-top: 40px; margin-bottom: 20px"
  154. @input="userTypeChange"
  155. >
  156. <el-radio-button label="心理异常"></el-radio-button>
  157. <el-radio-button label="抑郁"></el-radio-button>
  158. <el-radio-button label="压力"></el-radio-button>
  159. <el-radio-button label="焦虑"></el-radio-button>
  160. <el-radio-button label="视觉整合能力"></el-radio-button>
  161. <!-- <el-radio-button label="其他"></el-radio-button> -->
  162. </el-radio-group>
  163. <el-button
  164. style="margin-top: 40px; margin-bottom: 20px"
  165. @click="funExport"
  166. type="success"
  167. round
  168. class="add_class"
  169. >
  170. 心理异常导出
  171. </el-button>
  172. </div>
  173. <el-table
  174. :data="tableData"
  175. :cell-style="{ padding: '5px' }"
  176. :header-cell-style="{ background: '#F8F8F8', color: '#606266' }"
  177. >
  178. <el-table-column
  179. show-overflow-tooltip
  180. prop="userName"
  181. label="姓名"
  182. align="center"
  183. width=""
  184. >
  185. </el-table-column>
  186. <el-table-column
  187. prop="userNo"
  188. v-if="planType == '0'"
  189. label="学号"
  190. align="center"
  191. width=""
  192. >
  193. </el-table-column>
  194. <el-table-column
  195. prop="userNo"
  196. v-if="planType == '1'"
  197. label="编号"
  198. align="center"
  199. width=""
  200. >
  201. </el-table-column>
  202. <el-table-column prop="orgName" label="所属组织架构" align="center" width="">
  203. </el-table-column>
  204. <el-table-column label="症状" align="center" v-if="userType == '心理异常'">
  205. <template slot-scope="scope">
  206. <div
  207. v-show="scope.row.symptom == '重度'"
  208. style="display: flex; align-items: center; justify-content: center"
  209. >
  210. <img
  211. style="width: 18px; height: 18px; margin-right: 4px"
  212. src="../assets/img/report/1.png"
  213. alt=""
  214. />
  215. <div style="color: #d91b00">{{ scope.row.symptom }}</div>
  216. </div>
  217. <div
  218. v-show="scope.row.symptom == '中度'"
  219. style="display: flex; align-items: center; justify-content: center"
  220. >
  221. <img
  222. style="width: 18px; height: 18px; margin-right: 4px"
  223. src="../assets/img/report/2.png"
  224. alt=""
  225. />
  226. <div style="color: #f0a900">{{ scope.row.symptom }}</div>
  227. </div>
  228. </template>
  229. </el-table-column>
  230. <el-table-column label="症状" align="center" v-if="userType != '心理异常'">
  231. <template slot-scope="scope">
  232. <div
  233. v-show="scope.row.dimensionSymptom == '重度'"
  234. style="display: flex; align-items: center; justify-content: center"
  235. >
  236. <img
  237. style="width: 18px; height: 18px; margin-right: 4px"
  238. src="../assets/img/report/1.png"
  239. alt=""
  240. />
  241. <div style="color: #d91b00">{{ scope.row.dimensionSymptom }}</div>
  242. </div>
  243. <div
  244. v-show="scope.row.dimensionSymptom == '中度'"
  245. style="display: flex; align-items: center; justify-content: center"
  246. >
  247. <img
  248. style="width: 18px; height: 18px; margin-right: 4px"
  249. src="../assets/img/report/2.png"
  250. alt=""
  251. />
  252. <div style="color: #f0a900">{{ scope.row.dimensionSymptom }}</div>
  253. </div>
  254. </template>
  255. </el-table-column>
  256. <el-table-column label="操作" width="260px" align="center">
  257. <template slot-scope="scope">
  258. <div class="detail_button_out">
  259. <div class="detail_button" @click="selectPlan(scope.row)">
  260. <img src="../assets/img/table/search.png" />
  261. <span> 个人报告查看 </span>
  262. </div>
  263. <div class="detail_button" @click="queryQS(scope.row)">
  264. <img src="../assets/img/table/search.png" />
  265. <span> 趋势查看 </span>
  266. </div>
  267. </div>
  268. </template>
  269. </el-table-column>
  270. </el-table>
  271. </div>
  272. <el-pagination
  273. class="pag_class"
  274. background
  275. @current-change="handleCurrentChange"
  276. :current-page.sync="pageNum"
  277. layout="total, prev, pager, next"
  278. :page-size="pageSize"
  279. :page-sizes="[10, 20, 50, 100]"
  280. :total="total"
  281. >
  282. </el-pagination>
  283. <div class="report_ge_title" style="margin-top: 40px; margin-bottom: 20px">
  284. <div class="blue_t"></div>
  285. <div class="com">已完成人员中各维度统计</div>
  286. </div>
  287. <el-form :inline="true" class="demo-form-inline">
  288. <el-form-item label="维度选择">
  289. <el-select
  290. v-model="dime"
  291. @change="userDimensionality"
  292. placeholder="请选择维度"
  293. >
  294. <el-option
  295. v-for="item in dimeList"
  296. :key="item.id"
  297. :label="item.paramName"
  298. :value="item.paramValue"
  299. ></el-option>
  300. </el-select>
  301. </el-form-item>
  302. <el-form-item label="年级选择">
  303. <el-select v-model="grade" placeholder="请选择年级" @change="gradeChange">
  304. <el-option
  305. v-for="item in gradeList"
  306. :key="item.id"
  307. :label="item == '全部' ? '' : item == -1 ? '教师组' : `${item}级`"
  308. :value="item"
  309. ></el-option>
  310. </el-select>
  311. </el-form-item>
  312. <el-form-item label="组织架构选择" class="org_class">
  313. <el-select
  314. :popper-append-to-body="false"
  315. collapse-tags
  316. multiple
  317. v-model="orgName"
  318. @change="userOrgName"
  319. placeholder="请选择组织架构"
  320. >
  321. <el-option
  322. v-for="item in orgList"
  323. :key="item.id"
  324. :label="item.orgName"
  325. :value="item.orgNo"
  326. >
  327. </el-option>
  328. <div class="button_report">
  329. <el-button
  330. size="mini"
  331. type="success"
  332. class="all_select"
  333. @click="selectAllFun"
  334. >
  335. 全选
  336. </el-button>
  337. <el-button size="mini" class="all_clear" @click="clearAllFun">
  338. 清空
  339. </el-button>
  340. </div>
  341. </el-select>
  342. </el-form-item>
  343. </el-form>
  344. <div class="radio_group_style">
  345. <el-radio-group
  346. v-model="tabName"
  347. style="margin-top: 20px; margin-bottom: 20px"
  348. @input="tabFun"
  349. >
  350. <el-radio-button
  351. :label="item.paramValue"
  352. v-for="item in subDimeList"
  353. :key="item.id"
  354. >{{ item.paramName }}</el-radio-button
  355. >
  356. </el-radio-group>
  357. </div>
  358. <div style="display: flex; flex-direction: row">
  359. <el-radio-group
  360. v-model="subValue"
  361. @change="userSubFun"
  362. style="
  363. width: 100%;
  364. flex: 3;
  365. display: flex;
  366. flex-direction: row;
  367. justify-content: left;
  368. "
  369. >
  370. <el-radio
  371. v-for="item in subOption"
  372. :key="item"
  373. :label="item"
  374. style="margin-top: 20px"
  375. ></el-radio>
  376. </el-radio-group>
  377. </div>
  378. <div style="display: flex; flex-direction: row">
  379. <div
  380. style="
  381. flex: 4;
  382. width: 100%;
  383. display: flex;
  384. flex-direction: row;
  385. margin-top: 20px;
  386. justify-content: center;
  387. margin-bottom: 40px;
  388. "
  389. >
  390. <div style="flex: 1">
  391. <div style="display: flex; font-size: 16px; flex-direction: row">
  392. <div style="display: flex; flex-direction: column">
  393. <span class="sex_class">{{ tabNameCurrent }}</span>
  394. <span class="sex_class">心理健康</span>
  395. <span class="sex_class"
  396. >中重度{{ dime == "躯体化" ? "压力" : dime }}</span
  397. >
  398. </div>
  399. <div style="display: flex; flex-direction: column">
  400. <span class="sex_class"
  401. >:<span style="visibility: hidden">你</span></span
  402. >
  403. <span class="sex_class"
  404. >:<span style="visibility: hidden">你</span></span
  405. >
  406. <span class="sex_class"
  407. >:<span style="visibility: hidden">你</span></span
  408. >
  409. </div>
  410. <div style="display: flex; flex-direction: column">
  411. <span class="sex_class1"> {{ subValue }}&nbsp;{{ subAll }}人</span>
  412. <span
  413. class="sex_class1"
  414. style="background-color: #5470c6; text-align: center; color: #ffffff"
  415. >
  416. {{ subAll-subSingle }}人</span
  417. >
  418. <span
  419. class="sex_class1"
  420. style="background-color: #ffae00; text-align: center; color: #ffffff"
  421. >
  422. {{ subSingle }}人</span
  423. >
  424. </div>
  425. </div>
  426. </div>
  427. </div>
  428. <div class="chart_wrap" style="flex: 4">
  429. <BingChart2
  430. :options="options7"
  431. chartId="myPieChart7"
  432. chartName="心理健康异常"
  433. />
  434. </div>
  435. <div class="chart_wrap" style="flex: 4">&nbsp;</div>
  436. </div>
  437. <div class="finish_class">
  438. <el-table
  439. :data="subData"
  440. :row-style="{ height: '0px' }"
  441. :cell-style="{ padding: '5px' }"
  442. :header-cell-style="{ background: '#F8F8F8', color: '#606266' }"
  443. >
  444. <el-table-column
  445. show-overflow-tooltip
  446. prop="userName"
  447. label="姓名"
  448. align="center"
  449. width=""
  450. >
  451. </el-table-column>
  452. <el-table-column
  453. prop="userNo"
  454. v-if="planType == '0'"
  455. label="学号"
  456. align="center"
  457. width=""
  458. >
  459. </el-table-column>
  460. <el-table-column
  461. prop="userNo"
  462. v-if="planType == '1'"
  463. label="编号"
  464. align="center"
  465. width=""
  466. >
  467. </el-table-column>
  468. <el-table-column prop="orgName" label="所属组织架构" align="center" width="">
  469. </el-table-column>
  470. <el-table-column
  471. prop="dimensionName"
  472. label="维度"
  473. :formatter="forDimen"
  474. align="center"
  475. width=""
  476. >
  477. </el-table-column>
  478. <el-table-column label="症状" align="center">
  479. <template slot-scope="scope">
  480. <div
  481. v-show="scope.row.dimensionSymptom == '重度'"
  482. style="display: flex; align-items: center; justify-content: center"
  483. >
  484. <img
  485. style="width: 18px; height: 18px; margin-right: 4px"
  486. src="../assets/img/report/1.png"
  487. alt=""
  488. />
  489. <div style="color: #d91b00">{{ scope.row.dimensionSymptom }}</div>
  490. </div>
  491. <div
  492. v-show="scope.row.dimensionSymptom == '中度'"
  493. style="display: flex; align-items: center; justify-content: center"
  494. >
  495. <img
  496. style="width: 18px; height: 18px; margin-right: 4px"
  497. src="../assets/img/report/2.png"
  498. alt=""
  499. />
  500. <div style="color: #f0a900">{{ scope.row.dimensionSymptom }}</div>
  501. </div>
  502. </template>
  503. </el-table-column>
  504. <el-table-column label="操作" width="260px" align="center">
  505. <template slot-scope="scope">
  506. <div class="detail_button_out">
  507. <div class="detail_button" @click="selectPlan(scope.row)">
  508. <img src="../assets/img/table/search.png" />
  509. <span> 个人报告查看 </span>
  510. </div>
  511. <div class="detail_button" @click="queryQS(scope.row)">
  512. <img src="../assets/img/table/search.png" />
  513. <span> 趋势查看 </span>
  514. </div>
  515. </div>
  516. </template>
  517. </el-table-column>
  518. </el-table>
  519. </div>
  520. <el-pagination
  521. class="pag_class"
  522. background
  523. @current-change="subHandleCurrentChange"
  524. :current-page.sync="subPageNum"
  525. layout="total, prev, pager, next"
  526. :page-size="subPageSize"
  527. :page-sizes="[10, 20, 50, 100]"
  528. :total="subTotal"
  529. >
  530. </el-pagination>
  531. <div class="report_ge_title" style="margin-top: 40px; margin-bottom: 20px">
  532. <div class="blue_t"></div>
  533. <div class="com">可疑人员</div>
  534. </div>
  535. <div class="finish_class">
  536. <el-table
  537. :data="doubtfulData"
  538. :row-style="{ height: '0px' }"
  539. :cell-style="{ padding: '5px' }"
  540. :header-cell-style="{ background: '#F8F8F8', color: '#606266' }"
  541. >
  542. <el-table-column
  543. show-overflow-tooltip
  544. prop="userName"
  545. label="姓名"
  546. align="center"
  547. width=""
  548. >
  549. </el-table-column>
  550. <el-table-column
  551. prop="userNo"
  552. v-if="planType == '0'"
  553. label="学号"
  554. align="center"
  555. width=""
  556. >
  557. </el-table-column>
  558. <el-table-column
  559. prop="userNo"
  560. v-if="planType == '1'"
  561. label="编号"
  562. align="center"
  563. width=""
  564. >
  565. </el-table-column>
  566. <el-table-column prop="orgName" label="所属组织架构" align="center" width="">
  567. </el-table-column>
  568. <el-table-column
  569. prop="usedTime1"
  570. label="心理健康测评基础量表用时"
  571. align="center"
  572. width=""
  573. >
  574. </el-table-column>
  575. <el-table-column
  576. prop="usedTime2"
  577. label="心理健康评估任务用时"
  578. align="center"
  579. width=""
  580. >
  581. </el-table-column>
  582. <el-table-column label="操作" width="260px" align="center">
  583. <template slot-scope="scope">
  584. <div class="detail_button_out">
  585. <div class="detail_button" @click="selectPlan(scope.row)">
  586. <img src="../assets/img/table/search.png" />
  587. <span> 个人报告查看 </span>
  588. </div>
  589. <div class="detail_button" @click="queryQS(scope.row)">
  590. <img src="../assets/img/table/search.png" />
  591. <span> 趋势查看 </span>
  592. </div>
  593. </div>
  594. </template>
  595. </el-table-column>
  596. <!-- <el-table-column
  597. prop="dimensionName"
  598. label="维度"
  599. :formatter="forDimen"
  600. align="center"
  601. width=""
  602. >
  603. </el-table-column> -->
  604. <!-- <el-table-column prop="dimensionSymptom" label="症状" align="center" width="">
  605. </el-table-column> -->
  606. </el-table>
  607. </div>
  608. <el-pagination
  609. class="pag_class"
  610. background
  611. @current-change="doubtfulHandleCurrentChange"
  612. :current-page.sync="doubtfulPageNum"
  613. layout="total, prev, pager, next"
  614. :page-size="doubtfulPageSize"
  615. :page-sizes="[10, 20, 50, 100]"
  616. :total="doubtfulTotal"
  617. >
  618. </el-pagination>
  619. <!-- <div class="report_ge_title" style="margin-top: 40px; margin-bottom: 20px">
  620. <div class="blue_t"></div>
  621. <div class="com">满分人员</div>
  622. </div>
  623. <div class="finish_class">
  624. <el-table
  625. :data="fullmarkData"
  626. :row-style="{ height: '0px' }"
  627. :cell-style="{ padding: '5px' }"
  628. :header-cell-style="{ background: '#F8F8F8', color: '#606266' }"
  629. >
  630. <el-table-column
  631. show-overflow-tooltip
  632. prop="userName"
  633. label="姓名"
  634. align="center"
  635. width=""
  636. >
  637. </el-table-column>
  638. <el-table-column prop="userNo" label="学号" align="center" width="">
  639. </el-table-column>
  640. <el-table-column prop="orgName" label="所属组织架构" align="center" width="">
  641. </el-table-column>
  642. </el-table>
  643. </div>
  644. <el-pagination
  645. class="pag_class"
  646. background
  647. @current-change="fullmarkHandleCurrentChange"
  648. :current-page.sync="fullmarkPageNum"
  649. layout="total, prev, pager, next"
  650. :page-size="fullmarkPageSize"
  651. :page-sizes="[10, 20, 50, 100]"
  652. :total="fullmarkTotal"
  653. >
  654. </el-pagination> -->
  655. </div>
  656. </el-dialog>
  657. <Report1 ref="register" @search="searchTarget" />
  658. <div></div>
  659. </div>
  660. </template>
  661. <script>
  662. //引入echarts组件
  663. import * as echarts from "echarts";
  664. import PieChart from "@/components/PieChart";
  665. import BingChart from "@/components/BingChart";
  666. import BingChart2 from "@/components/BingChart2";
  667. import { basePath } from "../utils/http";
  668. import report1 from "../components/Report1.vue";
  669. import { reject, resolve } from "core-js/fn/promise";
  670. export default {
  671. components: {
  672. BingChart,
  673. BingChart2,
  674. Report1: report1,
  675. },
  676. data() {
  677. return {
  678. basePath: basePath,
  679. //获取计划名称
  680. planName: "",
  681. planId: "",
  682. dialogVisible: false,
  683. echarts_bing: "",
  684. option_bing: {},
  685. echarts_zhu: "",
  686. option_zhu: {},
  687. total: 0,
  688. pageSize: 10,
  689. pageNum: 1,
  690. tableData: [],
  691. options1: [],
  692. options2: [],
  693. options3: [],
  694. options4: [],
  695. options5: [],
  696. options6: [],
  697. options7: [],
  698. completeNum: 0,
  699. unComplete: 0,
  700. userType: "心理异常",
  701. //维度选择--字段
  702. dime: "焦虑",
  703. dimeList: [],
  704. //组织架构列表
  705. orgList: [],
  706. //组织编号name
  707. orgName: [],
  708. //子维度的列表
  709. subDimeList: [],
  710. //子维度默认绑定的值
  711. tabName: "1",
  712. tabNameCurrent: "性别",
  713. //子维度的子选项
  714. subValue: "",
  715. subOption: [],
  716. //子维度的人员显示数组
  717. subData: [],
  718. //子维度--第几页
  719. subPageNum: 1,
  720. //子维度--一页多少条
  721. subPageSize: 10,
  722. //子维度总共多少条
  723. subTotal: 0,
  724. dimensionName: "",
  725. //未完成的分页--每页多少条
  726. complatePageSize: 6,
  727. //未完成的分页--第几页
  728. complatePageNum: 1,
  729. //未完成的数据
  730. complateTableData: [],
  731. //未完成的总条数
  732. complateTotal: 0,
  733. abnormalNum: 0,
  734. grade: "",
  735. gradeList: [],
  736. subAll: 0,
  737. subSingle: 0,
  738. //可疑人员总共变量
  739. doubtfulData: [],
  740. //可疑人员第几页
  741. doubtfulPageNum: 1,
  742. //可疑人员每页条数
  743. doubtfulPageSize: 10,
  744. //每页多少条
  745. doubtfulTotal: 0,
  746. //----------满分人员----------
  747. //满分人员总变量
  748. fullmarkData: [],
  749. //满分人员第几页
  750. fullmarkPageNum: 1,
  751. //满分人员每页条数
  752. fullmarkPageSize: 10,
  753. //满分人员每页多少条
  754. fullmarkTotal: 0,
  755. planType: "",
  756. };
  757. },
  758. mounted() {
  759. this.echarts_zhu = this.$refs.echarts_zhu;
  760. this.option_zhu = {
  761. title: {
  762. text: "",
  763. },
  764. tooltip: {
  765. trigger: "axis",
  766. axisPointer: {
  767. type: "shadow",
  768. // shadowStyle:{
  769. // color:'rgba(0,0,0,0.5)',
  770. // shadowBlur: 10,
  771. // shadowOffsetX:0,
  772. // shadowOffsetY:'0'
  773. // }
  774. },
  775. formatter: function (params) {
  776. var relVal = "";
  777. let na = params[0].name;
  778. for (var i = 0, l = params.length; i < l; i++) {
  779. relVal += params[i].marker + na + " : " + params[i].value + "人次";
  780. }
  781. return relVal;
  782. },
  783. // formatter: "{b} : {c} % ",
  784. // formatter: function (params,trigger) {
  785. // return '{a} <br/>{b} : {c} <br/>百分比 : {d}%'
  786. // },
  787. },
  788. legend: {},
  789. grid: {
  790. left: "3%",
  791. right: "4%",
  792. bottom: "3%",
  793. containLabel: true,
  794. },
  795. xAxis: {
  796. type: "category",
  797. data: [],
  798. // axisLabel: {
  799. // width: 40, //设置内容宽度
  800. // // overflow:'break',
  801. // overflow: "truncate",
  802. // },
  803. // axisLabel: {
  804. // formatter: function (params) {
  805. // return "中等分值";
  806. // },
  807. // },
  808. },
  809. // dataZoom: {
  810. // type: "inside", //放大缩小x轴数值
  811. // },
  812. yAxis: {
  813. name: "人次",
  814. // max: 100,
  815. type: "value",
  816. boundaryGap: [0, 0.01],
  817. minInterval: 1,
  818. },
  819. series: [
  820. {
  821. type: "bar",
  822. data: [],
  823. barWidth: "15", //修改柱状图的宽度
  824. itemStyle: {
  825. color: new echarts.graphic.LinearGradient(
  826. //前四个参数用于配置渐变色的起止位置,这四个参数依次对应 右下左上 四个方位。也就是从右边开始顺时针方向。
  827. //通过修改前4个参数,可以实现不同的渐变方向
  828. /*第五个参数则是一个数组,用于配置颜色的渐变过程。
  829. 每项为一个对象,包含offset和color两个参数
  830. */
  831. 0,
  832. 0,
  833. 0,
  834. 1,
  835. [
  836. {
  837. //代表渐变色从正上方开始
  838. offset: 0, //offset范围是0~1,用于表示位置,0是指0%处的颜色
  839. color: "#644BFD",
  840. }, //柱图渐变色
  841. {
  842. offset: 1, //指100%处的颜色
  843. color: "#00F6E3",
  844. },
  845. ]
  846. ),
  847. borderWidth: 2,
  848. // borderColor: "#2EE053",
  849. barBorderRadius: [10, 10, 10, 10], //修改柱状图圆角
  850. },
  851. label: {
  852. show: true,
  853. position: "top",
  854. color: "#006FFF",
  855. formatter: function (params) {
  856. return parseInt(params.value) + "人次";
  857. },
  858. },
  859. },
  860. ],
  861. };
  862. // myChart.setOption(option_bing);
  863. //监听页面大小是否变化
  864. //如果变化则需要
  865. window.addEventListener("resize", this.echartsAllSize);
  866. },
  867. destroyed() {
  868. window.removeEventListener("resize", this.echartsAllSize);
  869. },
  870. methods: {
  871. queryQS(val) {
  872. let url = "/manage/tendency";
  873. this.bus.$emit("menuStatusUpdate", url);
  874. //跳转到趋势统计的页面
  875. //规定好跳转到哪个页面--然后跳转的类型
  876. // this.$router.push({path:'/manage/tendency',query:{orgNo:'1212',type:'1'}})
  877. sessionStorage.setItem("individualTendency", JSON.stringify(val));
  878. this.$router.push({
  879. path: "/manage/individualTendency",
  880. });
  881. },
  882. selectAllFun() {
  883. this.getOrgList1().then(() => {
  884. let params = {
  885. dimensionName: this.dime,
  886. orgList: this.orgName,
  887. planId: this.planId,
  888. quesType: this.tabName,
  889. quesValue: this.subValue,
  890. };
  891. this.queryBread(params);
  892. });
  893. },
  894. clearAllFun() {
  895. this.orgName = [];
  896. let params = {
  897. dimensionName: this.dime,
  898. orgList: this.orgName,
  899. planId: this.planId,
  900. quesType: this.tabName,
  901. quesValue: this.subValue,
  902. };
  903. this.queryBread(params);
  904. //清空的时候也是选择的全部
  905. },
  906. selectPlan(val) {
  907. this.addRegisterUser(val);
  908. },
  909. addRegisterUser(val) {
  910. let obj = val;
  911. obj.planId = this.planId;
  912. obj.planName = this.planName;
  913. // obj.planType
  914. obj.planType =this.planType;
  915. this.$refs.register.open(obj);
  916. },
  917. //导出心理异常的人员
  918. funExport() {
  919. // this.$http.getDown(
  920. // `/planUser/exportCompletedUserHighRisk?planId=${this.planId}`,
  921. // {},
  922. // (res) => {
  923. // // if (res && res.code == 200) {
  924. // var blob = new Blob([res.data], {
  925. // type: [
  926. // "application/vnd.ms-excel;charset=utf-8", // xls
  927. // "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8", // xlsx
  928. // ],
  929. // });
  930. // //var url = window.URL.createObjectURL(blob);
  931. // //新窗口打开
  932. // var link = document.createElement("a");
  933. // link.href = window.URL.createObjectURL(blob);
  934. // //这个顺属性加了浏览器回闪一下
  935. // // link.target = "_blank";
  936. // link.click();
  937. // }
  938. // );
  939. //下载
  940. let a = document.createElement("a");
  941. document.body.appendChild(a);
  942. a.setAttribute(
  943. "href",
  944. basePath + `/planUser/exportCompletedUserHighRisk?planId=${this.planId}`
  945. );
  946. a.click();
  947. },
  948. echartsAllSize() {
  949. let flag = false;
  950. setTimeout(() => {
  951. flag = true;
  952. if (this.dialogVisible && flag) {
  953. //设置变化的大小
  954. let myChart1 = echarts.init(this.echarts_zhu);
  955. myChart1.resize();
  956. }
  957. }, 1000);
  958. //大小自适应
  959. //查看当前页面是否显示
  960. },
  961. //change
  962. //年级改变参数
  963. gradeChange(val) {
  964. this.getOrgList(val);
  965. },
  966. //格式化页面数据
  967. forDimen(row) {
  968. if (row.dimensionName == "躯体化") {
  969. return "压力";
  970. } else {
  971. return row.dimensionName;
  972. }
  973. },
  974. //当子选项改变
  975. userSubFun(val) {
  976. //子选项改变以后----需要显示
  977. //渲染占比
  978. //改变以后需要调用--且显示饼状图
  979. //调用统计
  980. let params = {
  981. dimensionName: this.dime,
  982. orgList: this.orgName,
  983. planId: this.planId,
  984. quesType: this.tabName,
  985. quesValue: this.subValue,
  986. };
  987. this.queryBread(params);
  988. },
  989. //tab状态改变
  990. tabFun(a) {
  991. // this.tabNameCurrent=
  992. let linT = [];
  993. linT = this.subDimeList.filter((item) => {
  994. return item.paramValue == a;
  995. });
  996. //修改名字
  997. this.tabNameCurrent = linT[0].paramName;
  998. //设置选中的文字
  999. // this.subValue = "";
  1000. // this.tabName = a.name;
  1001. // //根据已选的tab ---
  1002. // //根据已选的value--
  1003. // //开始查询下边的小项
  1004. this.getSubOption(a);
  1005. // this.getSubOption(a.paneName);
  1006. //根据点击的name---查询里边的选项
  1007. //查询出来 下边的选项
  1008. },
  1009. //组织架构--选择变化
  1010. userOrgName() {
  1011. let params = {
  1012. dimensionName: this.dime,
  1013. orgList: this.orgName,
  1014. planId: this.planId,
  1015. quesType: this.tabName,
  1016. quesValue: this.subValue,
  1017. };
  1018. this.queryBread(params);
  1019. },
  1020. //维度选择
  1021. userDimensionality() {
  1022. this.queryStudentData();
  1023. //查询饼状图的数据
  1024. let params = {
  1025. dimensionName: this.dime,
  1026. orgList: this.orgName,
  1027. planId: this.planId,
  1028. quesType: this.tabName,
  1029. quesValue: this.subValue,
  1030. };
  1031. this.queryBread(params);
  1032. },
  1033. open(val) {
  1034. this.planType = val.planType;
  1035. this.planId = val.id;
  1036. this.planName = val.planName;
  1037. this.userType = "心理异常";
  1038. this.pageNum = 1;
  1039. this.dialogVisible = true;
  1040. this.isFin();
  1041. this.isScore();
  1042. this.searchTarget();
  1043. //个维度异常初次调用
  1044. this.queryGrade();
  1045. //获取维度列表
  1046. this.getDimensionList();
  1047. //获取组织架构信息
  1048. //获取可疑人员列表
  1049. this.doubtfulSearchList();
  1050. //获取满分人员列表
  1051. this.fullmarkSearchList();
  1052. },
  1053. //查询计划下年级
  1054. queryGrade() {
  1055. this.$http.get(`/planOrg/findPlanGrade?planId=${this.planId}`, {}, (res) => {
  1056. if (res && res.code == 200) {
  1057. this.gradeList = res.data;
  1058. this.gradeList.unshift("全部");
  1059. this.grade = res.data[0];
  1060. this.getOrgList(this.grade);
  1061. // this.orgName = [res.data[0].orgNo];
  1062. // this.orgList = res.data;
  1063. } else {
  1064. this.$message.error(res.msg);
  1065. }
  1066. });
  1067. },
  1068. //管理端统计完成情况
  1069. isFin() {
  1070. //调用接口返回信息
  1071. let url = `/plan/countComplete?planId=${this.planId}`;
  1072. this.$http.get(url, {}, (res) => {
  1073. if (res.code == 200) {
  1074. this.unComplete = res.data[0];
  1075. this.completeNum = res.data[1];
  1076. // this.getPlanDimNun();
  1077. this.isAbnormal();
  1078. }
  1079. });
  1080. },
  1081. isScore() {
  1082. let url = `/plan/countTotalNumber?planId=${this.planId}`;
  1083. this.$http.get(url, {}, (res) => {
  1084. if (res.code == 200) {
  1085. let nameList = [];
  1086. let scoreList = [];
  1087. for (const item in res.data) {
  1088. //
  1089. nameList.push(item);
  1090. scoreList.push(res.data[item]);
  1091. }
  1092. this.option_zhu.xAxis.data = nameList;
  1093. this.option_zhu.series[0].data = scoreList;
  1094. }
  1095. });
  1096. },
  1097. // 查询不同维度的中重度数量
  1098. getPlanDimNun() {
  1099. this.$http.get(
  1100. `userRecordScore/countNumByPlanDim?planId=${this.planId}`,
  1101. {},
  1102. (res) => {
  1103. let dimensionList = res.data;
  1104. this.options1 = [
  1105. { value: this.completeNum, name: "已完成" },
  1106. { value: this.unComplete, name: "未完成" },
  1107. ];
  1108. // this.options2 = [
  1109. // { value: this.completeNum - dimensionList[0]["焦虑"], name: "焦虑" },
  1110. // { value: parseInt(dimensionList[0]["焦虑"]), name: "焦虑占比" },
  1111. // ];
  1112. // this.options3 = [
  1113. // { value: this.completeNum, name: "已完成人数" },
  1114. // { value: parseInt(dimensionList[1]["抑郁"]), name: "抑郁占比" },
  1115. // ];
  1116. // this.options4 = [
  1117. // { value: this.completeNum, name: "已完成人数" },
  1118. // { value: parseInt(dimensionList[2]["压力"]), name: "压力占比" },
  1119. // ];
  1120. // this.options5 = [
  1121. // { value: this.completeNum, name: "已完成人数" },
  1122. // { value: parseInt(dimensionList[3]["精神障碍"]), name: "精神障碍占比" },
  1123. // ];
  1124. this.options6 = [
  1125. {
  1126. value: this.completeNum - this.abnormalNum,
  1127. name: "心理健康",
  1128. },
  1129. { value: this.abnormalNum, name: "心理异常" },
  1130. ];
  1131. let nameList = [];
  1132. // nameList.push("心理健康");
  1133. nameList.push("抑郁");
  1134. nameList.push("压力");
  1135. nameList.push("焦虑");
  1136. nameList.push("视觉整合能力");
  1137. let scoreList = [];
  1138. // scoreList.push(
  1139. // parseInt(((this.completeNum - this.abnormalNum) / this.completeNum) * 100)
  1140. // );
  1141. scoreList.push(dimensionList[1]["抑郁"]);
  1142. scoreList.push(dimensionList[2]["压力"]);
  1143. scoreList.push(dimensionList[0]["焦虑"]);
  1144. scoreList.push(dimensionList[3]["视觉整合能力"]);
  1145. this.echarts_zhu = this.$refs.echarts_zhu;
  1146. this.option_zhu.xAxis.data = nameList;
  1147. this.option_zhu.series[0].data = scoreList;
  1148. let myChart1 = echarts.init(this.echarts_zhu);
  1149. myChart1.setOption(this.option_zhu);
  1150. }
  1151. );
  1152. },
  1153. userTypeChange(val) {
  1154. this.pageNum = 1;
  1155. if (val == "心理异常") {
  1156. this.getAbnormalList();
  1157. } else {
  1158. this.dimensionName = val;
  1159. if (val == "压力") {
  1160. this.getDimensionPeopleList("躯体化");
  1161. } else {
  1162. this.getDimensionPeopleList(val);
  1163. }
  1164. }
  1165. },
  1166. searchTarget() {
  1167. this.pageNum = 1;
  1168. this.getUnCompleteList();
  1169. // this.getDimensionPeopleList("焦虑");
  1170. //查询心理异常人员
  1171. // this.isAbnormal()
  1172. this.getAbnormalList();
  1173. },
  1174. //进来调用已选列表接口
  1175. searchList() {
  1176. let url = `/planUser/findUserProgressByPage?pageSize=${this.pageSize}&pageNum=${this.pageNum}&planId=${this.planId}`;
  1177. this.$http.get(url, {}, (res) => {
  1178. if (res && res.code == 200) {
  1179. this.tableData = res.data.content;
  1180. this.total = res.data.totalElements;
  1181. } else {
  1182. // this.$toast.fail(res.msg);
  1183. this.$message.error(res.msg);
  1184. }
  1185. });
  1186. },
  1187. //每页多少条
  1188. handleSizeChange(val) {
  1189. //将首页重置为1时---且总条数变化
  1190. //设置为当前总条数
  1191. },
  1192. complateHandleCurrentChange(val) {
  1193. this.complatePageNum = val;
  1194. this.getUnCompleteList();
  1195. },
  1196. handleCurrentChange(val) {
  1197. this.pageNum = val;
  1198. if (this.userType == "心理异常") {
  1199. this.getAbnormalList();
  1200. } else if (this.userType == "压力") {
  1201. //---
  1202. this.getDimensionPeopleList("躯体化");
  1203. } else {
  1204. this.getDimensionPeopleList(this.userType);
  1205. }
  1206. // this.searchList();
  1207. },
  1208. formaCom(val) {
  1209. if (val.isComplete == "0") {
  1210. return "未完成";
  1211. } else {
  1212. return "已完成";
  1213. }
  1214. },
  1215. // 查询未完成人员
  1216. getUnCompleteList() {
  1217. this.$http.get(
  1218. `planUser/findIncompleteUser?planId=${this.planId}&pageSize=${this.complatePageSize}&pageNum=${this.complatePageNum}`,
  1219. {},
  1220. (res) => {
  1221. if (res && res.code == 200) {
  1222. this.complateTableData = res.data.content;
  1223. this.complateTotal = res.data.totalElements;
  1224. } else {
  1225. // this.$toast.fail(res.msg);
  1226. this.$message.error(res.msg);
  1227. }
  1228. }
  1229. );
  1230. },
  1231. // 各维度异常人员
  1232. getDimensionPeopleList(val) {
  1233. this.$http.get(
  1234. `planUser/findCompletedUserByDim?planId=${this.planId}&dimensionName=${val}&pageSize=${this.pageSize}&pageNum=${this.pageNum}`,
  1235. {},
  1236. (res) => {
  1237. if (res && res.code == 200) {
  1238. this.tableData = res.data.content;
  1239. this.total = res.data.totalElements;
  1240. } else {
  1241. // this.$toast.fail(res.msg);
  1242. this.$message.error(res.msg);
  1243. }
  1244. }
  1245. );
  1246. },
  1247. //查询统计端的--心理健康异常的人员
  1248. isAbnormal() {
  1249. //调用接口返回信息
  1250. let url = `/planUser/countCompletedUserHighRisk?planId=${this.planId}`;
  1251. this.$http.get(url, {}, (res) => {
  1252. if (res.code == 200) {
  1253. // this.unComplete = res.data[0];
  1254. // this.completeNum = res.data[1];
  1255. this.abnormalNum = res.data;
  1256. this.getPlanDimNun();
  1257. }
  1258. });
  1259. },
  1260. // 查询精神健康异常人员
  1261. getAbnormalList() {
  1262. this.$http.get(
  1263. `planUser/findCompletedUserHighRisk?planId=${this.planId}&pageSize=${this.pageSize}&pageNum=${this.pageNum}`,
  1264. {},
  1265. (res) => {
  1266. if (res && res.code == 200) {
  1267. this.tableData = res.data.content;
  1268. this.total = res.data.totalElements;
  1269. } else {
  1270. this.$message.error(res.msg);
  1271. }
  1272. }
  1273. );
  1274. },
  1275. //查询维度选择框
  1276. getDimensionList() {
  1277. this.$http.get(`/param/findAllByType?type=dimension`, {}, (res) => {
  1278. if (res && res.code == 200) {
  1279. this.dimeList = res.data;
  1280. this.getSexList();
  1281. } else {
  1282. this.$message.error(res.msg);
  1283. }
  1284. });
  1285. },
  1286. //组织架构选择--
  1287. getOrgList1() {
  1288. //修改为promise模式以便 进行调用回调的操作
  1289. return new Promise((resolve, reject) => {
  1290. this.$http.get(`/planOrg/findAllByPlanId?planId=${this.planId}`, {}, (res) => {
  1291. if (res && res.code == 200) {
  1292. resolve();
  1293. if (res.data.length > 0) {
  1294. let list = [];
  1295. for (let i = 0; i < res.data.length; i++) {
  1296. list.push(res.data[i].orgNo);
  1297. }
  1298. this.orgName = list;
  1299. this.orgList = res.data;
  1300. }
  1301. } else {
  1302. reject();
  1303. this.$message.error(res.msg);
  1304. }
  1305. });
  1306. });
  1307. },
  1308. getOrgList(val) {
  1309. let url = "";
  1310. if (val == "全部") {
  1311. this.getOrgList1();
  1312. } else {
  1313. url = `/planOrg/findPlanGradeOrg?planId=${this.planId}&grade=${val}`;
  1314. this.$http.get(url, {}, (res) => {
  1315. if (res && res.code == 200) {
  1316. if (res.data.length > 0) {
  1317. let list = [];
  1318. for (let i = 0; i < res.data.length; i++) {
  1319. list.push(res.data[i].orgNo);
  1320. }
  1321. this.orgName = list;
  1322. }
  1323. this.orgList = res.data;
  1324. } else {
  1325. this.$message.error(res.msg);
  1326. }
  1327. });
  1328. }
  1329. },
  1330. //获取维度下变的子项维度
  1331. getSexList() {
  1332. let url;
  1333. if (this.planType == "0") {
  1334. url = `/param/findAllByType?type=ques`;
  1335. } else {
  1336. url = `/param/findAllByType?type=ques2`;
  1337. }
  1338. this.$http.get(url, {}, (res) => {
  1339. if (res && res.code == 200) {
  1340. this.subDimeList = res.data;
  1341. //调用性别的选项
  1342. this.tabName=res.data[0].paramValue
  1343. this.getSubOption(this.tabName);
  1344. } else {
  1345. this.$message.error(res.msg);
  1346. }
  1347. });
  1348. },
  1349. //获取子维度的下边的选项
  1350. getSubOption(val) {
  1351. this.$http.get(`/questionnaire/findListById?id=${val}`, {}, (res) => {
  1352. if (res && res.code == 200) {
  1353. this.subOption = res.data;
  1354. this.subValue = res.data[0];
  1355. //选中子维度
  1356. let params = {
  1357. dimensionName: this.dime,
  1358. orgList: this.orgName,
  1359. planId: this.planId,
  1360. quesType: this.tabName,
  1361. quesValue: this.subValue,
  1362. };
  1363. this.queryBread(params);
  1364. } else {
  1365. this.$message.error(res.msg);
  1366. }
  1367. });
  1368. },
  1369. //查询--最终的子维度的---饼图
  1370. queryBread(params) {
  1371. // dimensionName :this.dime,
  1372. // orgList:[],
  1373. // planId :this.planId,
  1374. // quesType:this.tabName,
  1375. // quesValue:this.subValue
  1376. this.$http.get(
  1377. `/userRecordScore/countByPlanIdAndOrgListAndQues?dimensionName=${params.dimensionName}&orgList=${params.orgList}&planId=${params.planId}&quesType=${params.quesType}&quesValue=${params.quesValue}`,
  1378. {},
  1379. (res) => {
  1380. if (res && res.code == 200) {
  1381. this.subAll = res.data.totalNum;
  1382. this.subSingle = res.data.highNum;
  1383. this.options7 = [
  1384. {
  1385. value: res.data.totalNum,
  1386. name: `已完成${this.subValue}`,
  1387. },
  1388. {
  1389. value: res.data.highNum,
  1390. name: `中重度${this.dime == "躯体化" ? "压力" : this.dime}`,
  1391. },
  1392. ];
  1393. // {{ subValue }}&nbsp;&nbsp;&nbsp;&nbsp;中重度{{ dime}}
  1394. this.queryStudentData();
  1395. //调用接口开始查询选择的列表
  1396. } else {
  1397. this.$message.error(res.msg);
  1398. }
  1399. }
  1400. );
  1401. },
  1402. queryStudentData() {
  1403. let params = {
  1404. dimensionName: this.dime,
  1405. orgList: this.orgName,
  1406. planId: this.planId,
  1407. quesType: this.tabName,
  1408. quesValue: this.subValue,
  1409. };
  1410. //修改文本
  1411. //获取需要传输的参数
  1412. this.$http.get(
  1413. `/userRecordScore/findByPlanIdAndOrgListAndQuesList?dimensionName=${params.dimensionName}&orgList=${params.orgList}&pageNum=${this.subPageNum}&pageSize=${this.subPageSize}&planId=${params.planId}&quesType=${params.quesType}&quesValue=${params.quesValue}`,
  1414. {},
  1415. (res) => {
  1416. if (res && res.code == 200) {
  1417. this.subData = res.data.content;
  1418. this.subTotal = res.data.totalElements;
  1419. //调用接口开始查询选择的列表
  1420. } else {
  1421. this.$message.error(res.msg);
  1422. }
  1423. }
  1424. );
  1425. },
  1426. //子项当前页改变
  1427. subHandleCurrentChange(val) {
  1428. this.subPageNum = val;
  1429. this.queryStudentData();
  1430. },
  1431. //可疑人员列表查询
  1432. doubtfulSearchList() {
  1433. this.$http.get(
  1434. `/planUser/findCompletedNotSeriousUserList?pageNum=${this.doubtfulPageNum}&pageSize=${this.doubtfulPageSize}&planId=${this.planId}`,
  1435. {},
  1436. (res) => {
  1437. if (res && res.code == 200) {
  1438. this.doubtfulData = res.data.content;
  1439. this.doubtfulTotal = res.data.totalElements;
  1440. //调用接口开始查询选择的列表
  1441. } else {
  1442. this.$message.error(res.msg);
  1443. }
  1444. }
  1445. );
  1446. },
  1447. //可疑人员分页变化
  1448. doubtfulHandleCurrentChange(val) {
  1449. this.doubtfulPageNum = val;
  1450. //查询可疑人员列表数据
  1451. this.doubtfulSearchList();
  1452. },
  1453. //满分人员列表查询
  1454. fullmarkSearchList() {
  1455. this.$http.get(
  1456. `/planUser/findCompletedFullMarksUserList?pageNum=${this.fullmarkPageNum}&pageSize=${this.fullmarkPageSize}&planId=${this.planId}`,
  1457. {},
  1458. (res) => {
  1459. if (res && res.code == 200) {
  1460. this.fullmarkData = res.data.content;
  1461. this.fullmarkTotal = res.data.totalElements;
  1462. //调用接口开始查询选择的列表
  1463. } else {
  1464. this.$message.error(res.msg);
  1465. }
  1466. }
  1467. );
  1468. },
  1469. //满分人员分页变化
  1470. fullmarkHandleCurrentChange(val) {
  1471. this.fullmarkPageNum = val;
  1472. //查询可疑人员列表数据
  1473. this.fullmarkSearchList();
  1474. },
  1475. },
  1476. };
  1477. </script>
  1478. <style scoped>
  1479. .report_top_right_out >>> .el-table__header-wrapper {
  1480. border-radius: 20px;
  1481. background-color: #f8f8f8;
  1482. }
  1483. .table-content >>> .el-table__header-wrapper {
  1484. border-radius: 20px;
  1485. background-color: #f8f8f8;
  1486. }
  1487. .finish_class >>> .el-table__header-wrapper {
  1488. border-radius: 20px;
  1489. background-color: #f8f8f8;
  1490. }
  1491. .radio_group_style >>> .el-radio-button__orig-radio:checked + .el-radio-button__inner {
  1492. color: #ffffff;
  1493. background-color: #00bf78;
  1494. }
  1495. .radio_group_style >>> .el-radio-button__inner {
  1496. background-color: #f5f7fa;
  1497. }
  1498. .org_class >>> .el-input__inner {
  1499. width: 300px !important;
  1500. }
  1501. .org_class >>> .el-input {
  1502. width: 300px;
  1503. }
  1504. .org_class >>> .el-scrollbar__bar.is-vertical {
  1505. padding-bottom: 40px !important;
  1506. }
  1507. .org_class >>> .el-select-dropdown__wrap {
  1508. padding-bottom: 40px !important;
  1509. }
  1510. </style>
  1511. <style>
  1512. .el-dialog {
  1513. border-radius: 20px !important;
  1514. }
  1515. .el-tabs__content {
  1516. display: contents !important;
  1517. }
  1518. /* .el-scrollbar {
  1519. padding-bottom: 40px !important;
  1520. } */
  1521. /* .el-scrollbar {
  1522. padding-bottom: 40px !important;
  1523. } */
  1524. </style>
  1525. <style lang="less" scoped>
  1526. .pag_class /deep/ .el-input__inner {
  1527. width: 100% !important;
  1528. }
  1529. .chart_wrap {
  1530. //flex: 1;
  1531. // height: 450px;
  1532. .report_top_bingBo {
  1533. display: flex;
  1534. justify-content: space-around;
  1535. .isComStyle {
  1536. font-size: 16px;
  1537. span {
  1538. background-color: #5470c6;
  1539. padding: 5px 20px;
  1540. font-size: 16px;
  1541. margin-left: 14px;
  1542. color: #ffffff;
  1543. }
  1544. }
  1545. .isUnComStyle {
  1546. font-size: 16px;
  1547. span {
  1548. background-color: #ffae00;
  1549. padding: 5px 20px;
  1550. font-size: 16px;
  1551. margin-left: 14px;
  1552. color: #ffffff;
  1553. }
  1554. }
  1555. }
  1556. }
  1557. .report_ge_title {
  1558. display: flex;
  1559. align-items: center;
  1560. .blue_t {
  1561. display: flex;
  1562. width: 14px;
  1563. background-color: #00bf78;
  1564. height: 30px;
  1565. border-radius: 20px;
  1566. margin-right: 5px;
  1567. }
  1568. .com {
  1569. font-size: 18px;
  1570. font-weight: 700;
  1571. }
  1572. }
  1573. .report_top_right_out {
  1574. flex: 6;
  1575. .report_top_right {
  1576. margin-bottom: 20px;
  1577. text-align: center;
  1578. }
  1579. }
  1580. .sex_class {
  1581. // text-align: justify;
  1582. text-align-last: justify;
  1583. margin: 2px;
  1584. line-height: 24px;
  1585. }
  1586. // .sex_class:after {
  1587. // display: inline-block;
  1588. // width: 100%;
  1589. // content: "";
  1590. // height: 0px;
  1591. // }
  1592. // .sex_class:before {
  1593. // display: inline-block;
  1594. // width: 100%;
  1595. // content: "";
  1596. // height: 0px;
  1597. // }
  1598. // .sex_class1:before {
  1599. // display: inline-block;
  1600. // width: 100%;
  1601. // content: "";
  1602. // height: 0px;
  1603. // }
  1604. .sex_class1 {
  1605. text-align: left;
  1606. margin: 2px;
  1607. line-height: 24px;
  1608. }
  1609. // .sex_class1:after {
  1610. // display: inline-block;
  1611. // width: 100%;
  1612. // content: "";
  1613. // height: 0px;
  1614. // }
  1615. .detail_button_out {
  1616. display: flex;
  1617. justify-content: space-around;
  1618. .detail_button {
  1619. display: flex;
  1620. align-items: center;
  1621. cursor: pointer;
  1622. letter-spacing: 2px;
  1623. img {
  1624. width: 15px;
  1625. margin-right: 5px;
  1626. }
  1627. span {
  1628. color: #00bf78;
  1629. // font-weight: 600;
  1630. }
  1631. }
  1632. }
  1633. .button_report {
  1634. background-color: #ffffff;
  1635. position: absolute;
  1636. padding-top: 10px;
  1637. display: flex;
  1638. flex-direction: row;
  1639. justify-content: center;
  1640. padding-bottom: 10px;
  1641. bottom: 0;
  1642. left: 0;
  1643. right: 0;
  1644. .all_select {
  1645. cursor: pointer;
  1646. }
  1647. .all_clear {
  1648. cursor: pointer;
  1649. }
  1650. }
  1651. </style>