CompareUser.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988
  1. <template>
  2. <div class="out">
  3. <el-dialog
  4. :visible.sync="dialogVisible"
  5. :close-on-click-modal="false"
  6. width="80%"
  7. style="border-radius: 40px"
  8. >
  9. <div slot="title">
  10. <p
  11. style="
  12. text-align: center;
  13. margin-bottom: 20px;
  14. font-size: 20px;
  15. font-weight: 700;
  16. "
  17. >
  18. {{ userInfo.userName }}的计划列表
  19. </p>
  20. <div class="table-content">
  21. <el-table
  22. :data="tableData"
  23. :row-style="{ height: '0px' }"
  24. :cell-style="{ padding: '5px' }"
  25. :header-cell-style="{ background: '#F8F8F8', color: '#606266' }"
  26. @selection-change="handleSelectionChange"
  27. >
  28. <el-table-column type="selection" width="55"> </el-table-column>
  29. <el-table-column
  30. show-overflow-tooltip
  31. prop="planName"
  32. label="计划名称"
  33. align="center"
  34. width=""
  35. >
  36. </el-table-column>
  37. <!-- <el-table-column prop="planOrgName" label="所属专业" align="center" width="">
  38. </el-table-column> -->
  39. <el-table-column prop="score" label="总分" align="center" width="">
  40. </el-table-column>
  41. <el-table-column prop="planEndTime" label="结束时间" align="center" width="">
  42. </el-table-column>
  43. <el-table-column prop="enable" label="是否授权" align="center" width="">
  44. <template slot-scope="scope">
  45. <div
  46. style="
  47. display: flex;
  48. justify-content: center;
  49. align-items: center;
  50. height: 100%;
  51. "
  52. v-if="scope.row.enable == '1'"
  53. >
  54. <!-- <img src="../../assets/img/home/isA.png" /> -->
  55. <div
  56. style="
  57. color: #00955e;
  58. border: 1px solid #577bff;
  59. line-height: 24px;
  60. padding: 0px 15px;
  61. border-radius: 20px;
  62. background: #f0f6fe;
  63. color: #3061ff;
  64. "
  65. >
  66. 已授权
  67. </div>
  68. </div>
  69. <div
  70. style="
  71. display: flex;
  72. justify-content: center;
  73. align-items: center;
  74. height: 100%;
  75. "
  76. v-if="scope.row.enable == '0'"
  77. >
  78. <div
  79. style="
  80. color: #00955e;
  81. border: 1px solid #fdb1b1;
  82. line-height: 24px;
  83. padding: 0px 15px;
  84. border-radius: 20px;
  85. background: #fef0f0;
  86. color: #e14545;
  87. "
  88. >
  89. 未授权
  90. </div>
  91. <!-- <img src="../../assets/img/home/isA.png" style="width: 80px;"/> -->
  92. <!-- <div style="color: #d52121">未授权</div> -->
  93. </div>
  94. </template>
  95. </el-table-column>
  96. <!-- <el-table-column label="操作" width="510px" align="center">
  97. <template slot-scope="scope">
  98. <div class="detail_button_out">
  99. <div class="detail_button" @click="deleteUser(scope.row)">
  100. <img style="width: 20px" src="../assets/img/table/delete.png" />
  101. <span> 移除 </span>
  102. </div>
  103. </div>
  104. </template>
  105. </el-table-column> -->
  106. </el-table>
  107. </div>
  108. <el-pagination
  109. class="pag_class"
  110. background
  111. @size-change="handleSizeChange"
  112. @current-change="handleCurrentChange"
  113. :current-page.sync="pageNum"
  114. layout="total, sizes, prev, pager, next"
  115. :page-size="pageSize"
  116. :page-sizes="[10, 20, 50, 100]"
  117. :total="total"
  118. >
  119. </el-pagination>
  120. <p style="text-align: center; margin-top: 20px">
  121. <el-button type="success" round class="add_class" @click="isCompare"
  122. >对比</el-button
  123. >
  124. </p>
  125. </div>
  126. </el-dialog>
  127. <div>
  128. <el-dialog
  129. :visible.sync="compareVisible"
  130. :close-on-click-modal="false"
  131. width="80%"
  132. style="border-radius: 40px"
  133. >
  134. <div slot="title">
  135. <p style="text-align: center; margin-bottom: 20px; font-weight: 700">
  136. 同一用户不同计划对比
  137. </p>
  138. <div class="compare_plan">
  139. <div class="compare_plan_out1">
  140. <span class="compare_plan_name" v-if="multipleSelection[0]"
  141. >计划名称:{{ multipleSelection[0].planName }}</span
  142. >
  143. <span class="compare_plan_time" v-if="multipleSelection[0]"
  144. >结束时间:{{ multipleSelection[0].planEndTime }}</span
  145. >
  146. </div>
  147. <div class="compare_plan_out2">
  148. <span class="compare_plan_name" v-if="multipleSelection[1]"
  149. >计划名称:{{ multipleSelection[1].planName }}</span
  150. >
  151. <span class="compare_plan_time" v-if="multipleSelection[1]"
  152. >结束时间:{{ multipleSelection[1].planEndTime }}</span
  153. >
  154. </div>
  155. </div>
  156. <div class="compare_class">
  157. <div class="compare_user1">
  158. <div class="compare_user1_out">
  159. <img src="../assets/report/man.png" />
  160. <div class="compare_user1_info">
  161. <div>姓名:{{ userInfo.userName }}</div>
  162. <div>学号:{{ userInfo.userNo }}</div>
  163. <div>测试用时:{{ useTime1 }}</div>
  164. </div>
  165. </div>
  166. <div class="compare_group">所属组织架构</div>
  167. <div class="compare_group_detail">
  168. {{ orgName1 }}
  169. </div>
  170. </div>
  171. <div class="compare_user2">
  172. <div class="compare_user1_out">
  173. <img src="../assets/report/man.png" />
  174. <div class="compare_user1_info">
  175. <div>姓名:{{ userInfo.userName }}</div>
  176. <div>学号:{{ userInfo.userNo }}</div>
  177. <div>测试用时:{{ useTime2 }}</div>
  178. </div>
  179. </div>
  180. <div class="compare_group">所属组织架构</div>
  181. <div class="compare_group_detail">
  182. {{ orgName2 }}
  183. </div>
  184. </div>
  185. </div>
  186. <div class="compare_score">
  187. <div class="compare_score_inner">
  188. <div class="compare_score_left" v-if="userData1.length > 0">
  189. 总分:{{ userData1[0].dimensionScore }}
  190. </div>
  191. <div class="compare_result" v-if="userData1.length > 0">
  192. 结论:{{ userData1[0].dimensionSymptom }}、{{
  193. userData1[0].dimensionImprovement
  194. }}
  195. </div>
  196. </div>
  197. <div class="compare_score_inner">
  198. <div class="compare_score_right" v-if="userData2.length > 0">
  199. 总分:{{ userData2[0].dimensionScore }}
  200. </div>
  201. <div class="compare_result" v-if="userData2.length > 0">
  202. 结论:{{ userData2[0].dimensionSymptom }}、{{
  203. userData2[0].dimensionImprovement
  204. }}
  205. </div>
  206. </div>
  207. </div>
  208. <div ref="echarts_ld" style="width: 100%; height: 600px"></div>
  209. <div ref="echarts_zhu" style="width: 100%; height: 600px"></div>
  210. <div class="cpmpare_all" v-if="userData1.length > 0 && userData2.length > 0">
  211. <div v-for="(item, index) in userData1" :key="item.id">
  212. <div v-show="item.dimensionName != '总分'">
  213. <!-- <div v-show="index<userData2.length-1"> -->
  214. <div class="dimensionality_out">
  215. <div class="left">
  216. <span class="totol_all">维度:</span
  217. >{{ userData1[index].dimensionName }}
  218. </div>
  219. <div class="right">
  220. <span class="totol_all">维度:</span
  221. >{{ userData2[index].dimensionName }}
  222. </div>
  223. </div>
  224. <div class="allScore_out">
  225. <div class="left">
  226. <span class="totol_all">总分:</span
  227. ><span
  228. :style="{
  229. color:
  230. parseFloat(userData1[index].dimensionScore) <
  231. parseFloat(userData2[index].dimensionScore)
  232. ? 'red'
  233. : '',
  234. }"
  235. >{{ userData1[index].dimensionScore }}</span
  236. >
  237. </div>
  238. <div class="right">
  239. <!-- {{userData1[index].dimensionScore>userData2[index].dimensionScore}} -->
  240. <span class="totol_all">总分:</span
  241. ><span
  242. :style="{
  243. color:
  244. parseFloat(userData1[index].dimensionScore) >
  245. parseFloat(userData2[index].dimensionScore)
  246. ? 'red'
  247. : '',
  248. }"
  249. >{{ userData2[index].dimensionScore }}</span
  250. >
  251. </div>
  252. </div>
  253. <div class="allScore_out">
  254. <div class="left">
  255. <span class="totol_all">结论:</span
  256. ><span
  257. :style="{
  258. color:
  259. parseFloat(userData1[index].dimensionScore) <
  260. parseFloat(userData2[index].dimensionScore)
  261. ? 'red'
  262. : '',
  263. }"
  264. >{{ userData1[index].dimensionSymptom }}</span
  265. >
  266. </div>
  267. <div class="right">
  268. <span class="totol_all">结论:</span
  269. ><span
  270. :style="{
  271. color:
  272. parseFloat(userData1[index].dimensionScore) >
  273. parseFloat(userData2[index].dimensionScore)
  274. ? 'red'
  275. : '',
  276. }"
  277. >{{ userData2[index].dimensionSymptom }}</span
  278. >
  279. </div>
  280. </div>
  281. <div class="allScore_out">
  282. <div class="left">
  283. <span class="totol_all">说明:</span
  284. ><span
  285. :style="{
  286. color:
  287. parseFloat(userData1[index].dimensionScore) <
  288. parseFloat(userData2[index].dimensionScore)
  289. ? 'red'
  290. : '',
  291. }"
  292. >{{ userData1[index].dimensionDesc }}</span
  293. >
  294. </div>
  295. <div class="right">
  296. <span class="totol_all">说明:</span
  297. ><span
  298. :style="{
  299. color:
  300. parseFloat(userData1[index].dimensionScore) >
  301. parseFloat(userData2[index].dimensionScore)
  302. ? 'red'
  303. : '',
  304. }"
  305. >{{ userData2[index].dimensionDesc }}</span
  306. >
  307. </div>
  308. </div>
  309. <div class="allScore_out">
  310. <div class="left">
  311. <span class="totol_all">建议:</span
  312. >{{ userData1[index].dimensionSuggestion }}
  313. </div>
  314. <div class="right">
  315. <span class="totol_all">建议:</span
  316. >{{ userData2[index].dimensionSuggestion }}
  317. </div>
  318. </div>
  319. </div>
  320. </div>
  321. </div>
  322. <!-- <div class="cpmpare_all" v-if="userData1.length > 0 && userData2.length > 0">
  323. <div class="compare_score_detail_left">
  324. <div v-for="(item, index) in userData1" :key="item.id">
  325. <div class="compare_score_inner" v-show="userData1.length - 1 !== index">
  326. <div class="compare_score_left_back">
  327. 维度:{{ item.dimensionName }}
  328. </div>
  329. <div class="compare_score_left">总分:{{ item.dimensionScore }}</div>
  330. <div class="compare_result_new">
  331. <span class="title">结论:</span>{{ item.dimensionSymptom }}
  332. </div>
  333. <div class="compare_result_new">
  334. <span class="title">说明:</span> {{ item.dimensionDesc }}
  335. </div>
  336. <div class="compare_result_new">
  337. <span class="title">分析:</span> {{ item.dimensionImprovement }}
  338. </div>
  339. <div class="compare_result_new">
  340. <span class="title">建议:</span> {{ item.dimensionSuggestion }}
  341. </div>
  342. </div>
  343. </div>
  344. </div>
  345. <div class="compare_score_detail_right">
  346. <div v-for="(item, index) in userData2" :key="item.id">
  347. <div class="compare_score_inner" v-show="userData2.length - 1 !== index">
  348. <div class="compare_score_right_back">
  349. 维度:{{ item.dimensionName }}
  350. </div>
  351. <div class="compare_score_right">总分:{{ item.dimensionScore }}</div>
  352. <div class="compare_result_new">
  353. <span class="title">结论:</span>{{ item.dimensionSymptom }}
  354. </div>
  355. <div class="compare_result_new">
  356. <span class="title">说明:</span> {{ item.dimensionDesc }}
  357. </div>
  358. <div class="compare_result_new">
  359. <span class="title">分析:</span> {{ item.dimensionImprovement }}
  360. </div>
  361. <div class="compare_result_new">
  362. <span class="title">建议:</span> {{ item.dimensionSuggestion }}
  363. </div>
  364. </div>
  365. </div>
  366. </div>
  367. </div> -->
  368. </div>
  369. </el-dialog>
  370. </div>
  371. </div>
  372. </template>
  373. <script>
  374. //引入echarts组件
  375. import * as echarts from "echarts";
  376. import { oSessionStorage } from "../utils/utils";
  377. export default {
  378. data() {
  379. return {
  380. userInfo: {},
  381. userInfoSession: {},
  382. dialogVisible: false,
  383. compareVisible: false,
  384. total: 0,
  385. pageSize: 10,
  386. pageNum: 1,
  387. tableData: [],
  388. //选中的数组
  389. multipleSelection: [],
  390. echarts_ld: "",
  391. echarts_zhu: "",
  392. option_w: {},
  393. option_z: {},
  394. optionTT: {},
  395. userData1: {},
  396. orgName1: "",
  397. orgName2: "",
  398. //用户1的测试用时
  399. useTime1: "",
  400. //用户2的测试用时
  401. useTime2: "",
  402. echarts_des_list1: [],
  403. echarts_data_list1: [],
  404. echarts_name_list1: [],
  405. echarts_zhuname_list: [],
  406. userData2: {},
  407. echarts_des_list2: [],
  408. echarts_data_list2: [],
  409. echarts_name_list2: [],
  410. };
  411. },
  412. mounted() {
  413. this.echarts_ld = this.$refs.echarts_ld;
  414. this.echarts_zhu = this.$refs.echarts_zhu;
  415. this.option_w = {
  416. title: {
  417. // text: 'Basic Radar Chart'
  418. },
  419. legend: {
  420. // data: ['Allocated Budget', 'Actual Spending']
  421. },
  422. radar: {
  423. // shape: "square", //设置雷达图形状,值有circle、square,默认为方形
  424. // splitNumber: 3, // 雷达图圈数设置
  425. // shape: 'circle',
  426. indicator: this.echarts_name_list1,
  427. name: {
  428. //修改indicator文字的颜色
  429. textStyle: {
  430. // color: "#999999",
  431. },
  432. },
  433. // 设置雷达图中间射线的颜色
  434. splitArea: {
  435. //设置图表颜色,show的值为true
  436. show: true,
  437. // areaStyle: {
  438. // // color:"#c1ddf8", //一般设置方式
  439. // //设置渐变背景色 new echarts.graphic.LinearGradient(a,b,c,d,arr)
  440. // //a ,b,c,d值可为0,1 a:1表示arr中的颜色右到左;c:1 arr中的颜色左到右
  441. // //b:1表示arr中的颜色下到上;d:1表示arr中的颜色上到下
  442. // color: new echarts.graphic.LinearGradient(
  443. // 0,
  444. // 0,
  445. // 0,
  446. // 0,
  447. // [
  448. // { offset: 1, color: "#F7E1DE" }, // 0% 处的颜色
  449. // { offset: 0, color: "#FF1E00" }, // 100% 处的颜色
  450. // ],
  451. // false
  452. // ),
  453. // },
  454. },
  455. // splitArea: {
  456. // areaStyle: {
  457. // color: {
  458. // type: "radial", // linear 线性渐变 radial径向渐变
  459. // x: 0.4, // 0.5为正中心,如果小于渐变中心靠左
  460. // y: 0.5, // 0.5为正中心,如果小于渐变中心靠上
  461. // r: 1,
  462. // colorStops: [
  463. // {
  464. // offset: 0,
  465. // color: "#f16e6e", // 0% 处的颜色rgba(247, 215, 211, 1)
  466. // },
  467. // {
  468. // offset: 1,
  469. // color: "rgba(247, 225, 222, 1)", // 100% 处的颜色rgba(247, 225, 222, 1)
  470. // },
  471. // ],
  472. // },
  473. // },
  474. // },
  475. //网格颜色设置
  476. splitLine: {
  477. show: true,
  478. lineStyle: {
  479. width: 1,
  480. // color: "#FFBA92",
  481. },
  482. },
  483. },
  484. series: [
  485. {
  486. // name: "Budget vs spending",
  487. type: "radar",
  488. // symbolSize: 6,
  489. data: [
  490. {
  491. value: this.echarts_data_list1,
  492. //折线的颜色
  493. lineStyle: {
  494. normal: {
  495. color: "#006FFF",
  496. },
  497. },
  498. //折线拐点颜色
  499. itemStyle: {
  500. normal: {
  501. color: "#006FFF",
  502. // borderColor:'#000000',//拐点边框颜色
  503. borderWidth: 3, //拐点边框大小
  504. },
  505. // emphasis: {
  506. // color: '#000000'//hover拐点颜色定义
  507. // }
  508. },
  509. //阴影面积
  510. areaStyle: {
  511. color: "rgba(0,111,255,0.3)",
  512. },
  513. },
  514. {
  515. value: this.echarts_data_list2,
  516. lineStyle: {
  517. normal: {
  518. color: "#FF1E00",
  519. },
  520. },
  521. itemStyle: {
  522. normal: {
  523. color: "#FF1E00",
  524. // borderColor:'#000000',//拐点边框颜色
  525. borderWidth: 3, //拐点边框大小
  526. },
  527. // emphasis: {
  528. // color: '#000000'//hover拐点颜色定义
  529. // }
  530. },
  531. areaStyle: {
  532. color: "rgba(255,30,0,0.3)",
  533. },
  534. },
  535. ],
  536. },
  537. ],
  538. };
  539. this.option_z = {
  540. xAxis: {
  541. type: "category",
  542. data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
  543. axisLabel: {
  544. interval: 0,
  545. // rotate:'45'
  546. },
  547. },
  548. yAxis: {
  549. type: "value",
  550. },
  551. series: [
  552. {
  553. data: [120, 200, 150, 80, 70, 110, 130],
  554. type: "bar",
  555. itemStyle: {
  556. color: "#B2D4FF",
  557. },
  558. },
  559. {
  560. data: [120, 200, 150, 80, 70, 110, 130],
  561. type: "bar",
  562. itemStyle: {
  563. color: "#FFBBB2",
  564. },
  565. },
  566. ],
  567. };
  568. },
  569. methods: {
  570. open(val) {
  571. //从缓存获取当前登录的用户信息
  572. this.userInfoSession = JSON.parse(oSessionStorage.getItem("userInfo"));
  573. this.userInfo = val;
  574. this.dialogVisible = true;
  575. this.searchTarget();
  576. },
  577. //对比方法
  578. isCompare() {
  579. //判断是否是选了两个用户
  580. if (this.multipleSelection.length != 2) {
  581. this.$message({
  582. message: "请选两个进行对比",
  583. type: "warning",
  584. });
  585. return;
  586. }
  587. //查看是否两个是否都授权了
  588. // enable
  589. //先判断是否是运维管理员
  590. if (this.userInfoSession.roleType != 5) {
  591. if (
  592. !(
  593. this.multipleSelection[0].enable == "1" &&
  594. this.multipleSelection[1].enable == "1"
  595. )
  596. ) {
  597. this.$message({
  598. message: "请选择已授权的测试计划",
  599. type: "warning",
  600. });
  601. return;
  602. }
  603. }
  604. this.compareVisible = true;
  605. this.queryDetail1(this.multipleSelection[0].id);
  606. this.queryDetail2(this.multipleSelection[1].id);
  607. //开始调用对比的方法
  608. //打开对比弹出框、、显示对比结果
  609. //调用查询各个报告的方法
  610. },
  611. queryDetail1(id) {
  612. let url = `/userRecordScore/findAllByPlanIdAndUserNo?planId=${id}&userNo=${this.userInfo.userNo}`;
  613. this.$http.get(url, {}, (res) => {
  614. if (res && res.code == 200) {
  615. this.useTime1 = res.data.usedTime;
  616. this.orgName1 = res.data.user.orgName;
  617. let a = res.data.report;
  618. this.userData1 = a;
  619. if (this.userData2.length == 0) {
  620. this.formatterDataW(a, false, 1);
  621. } else {
  622. this.formatterDataW(a, true, 1);
  623. }
  624. } else {
  625. // this.$toast.fail(res.msg);
  626. this.$message.error(res.msg);
  627. }
  628. });
  629. },
  630. queryDetail2(id) {
  631. let url = `/userRecordScore/findAllByPlanIdAndUserNo?planId=${id}&userNo=${this.userInfo.userNo}`;
  632. this.$http.get(url, {}, (res) => {
  633. if (res && res.code == 200) {
  634. this.useTime2 = res.data.usedTime;
  635. this.orgName2 = res.data.user.orgName;
  636. let a = res.data.report.filter((item) => {
  637. return item.isIcon == "1";
  638. });
  639. this.userData2 = a;
  640. if (this.userData1.length == 0) {
  641. this.formatterDataW(a, false, 2);
  642. } else {
  643. this.formatterDataW(a, true, 2);
  644. }
  645. } else {
  646. // this.$toast.fail(res.msg);
  647. this.$message.error(res.msg);
  648. }
  649. });
  650. },
  651. formatterDataW(a, flag, index) {
  652. let scoreList = [];
  653. let scoreDes = [];
  654. let nameList = [];
  655. let zhuNameList = [];
  656. for (let i = 0; i < a.length; i++) {
  657. if (a[i].dimensionName != "总分") {
  658. scoreList.push(parseInt(a[i].dimensionScore));
  659. scoreDes.push(a[i].dimensionAnalysis);
  660. let ob = { name: a[i].dimensionName, max: 100 };
  661. nameList.push(ob);
  662. zhuNameList.push(a[i].dimensionName);
  663. }
  664. //
  665. }
  666. this.echarts_zhuname_list = zhuNameList;
  667. if (index == "1") {
  668. this.echarts_des_list1 = scoreDes;
  669. this.echarts_data_list1 = scoreList;
  670. this.echarts_name_list1 = nameList;
  671. } else {
  672. this.echarts_des_list2 = scoreDes;
  673. this.echarts_data_list2 = scoreList;
  674. this.echarts_name_list2 = nameList;
  675. }
  676. if (flag) {
  677. const myChart = echarts.init(this.echarts_ld);
  678. this.option_w.series[0].data[0].value = this.echarts_data_list1;
  679. this.option_w.series[0].data[1].value = this.echarts_data_list2;
  680. this.option_w.radar.indicator = this.echarts_name_list1; //name
  681. myChart.setOption(this.option_w);
  682. const myChart1 = echarts.init(this.echarts_zhu);
  683. this.option_z.series[0].data = this.echarts_data_list1;
  684. this.option_z.series[1].data = this.echarts_data_list2;
  685. this.option_z.xAxis.data = this.echarts_zhuname_list; //name
  686. myChart1.setOption(this.option_z);
  687. }
  688. },
  689. //选择用户进行对比的方法
  690. handleSelectionChange(val) {
  691. //判断里边是否有未完成的
  692. // let hasNo =false
  693. // if (val.length > 0) {
  694. // for (let i = 0; i < val.length; i++) {
  695. // //
  696. // if(val[i].){
  697. // }
  698. // }
  699. // }
  700. if (val.length > 2) {
  701. this.$message({
  702. type: "warning",
  703. message: "请选两个进行对比",
  704. });
  705. return;
  706. }
  707. this.multipleSelection = val;
  708. },
  709. searchTarget() {
  710. this.pageNum = 1;
  711. this.searchList();
  712. },
  713. //进来调用已选列表接口
  714. searchList() {
  715. let url = `/plan/findCompletePlanByUser?pageSize=${this.pageSize}&pageNum=${this.pageNum}&userNo=${this.userInfo.userNo}`;
  716. this.$http.get(url, {}, (res) => {
  717. if (res && res.code == 200) {
  718. this.tableData = res.data.content;
  719. this.total = res.data.totalElements;
  720. } else {
  721. // this.$toast.fail(res.msg);
  722. this.$message.error(res.msg);
  723. }
  724. });
  725. },
  726. //每页多少条
  727. handleSizeChange(val) {
  728. //将首页重置为1时---且总条数变化
  729. //设置为当前总条数
  730. },
  731. handleCurrentChange(val) {
  732. this.pageNum = val;
  733. this.searchList();
  734. },
  735. formaCom(val) {
  736. if (val.isComplete == "0") {
  737. return "未完成";
  738. } else {
  739. return "已完成";
  740. }
  741. },
  742. },
  743. };
  744. </script>
  745. <style lang="less" scoped>
  746. .out/deep/ .el-dialog {
  747. border-radius: 20px !important;
  748. // background-color: #f7f7f7 !important;
  749. }
  750. .pag_class /deep/ .el-input__inner {
  751. width: 100% !important;
  752. }
  753. .compare_class {
  754. display: flex;
  755. flex-direction: row;
  756. .compare_user1 {
  757. flex: 1;
  758. margin-right: 10px;
  759. background-color: #f1f7ff;
  760. padding: 20px 20px;
  761. border-radius: 20px;
  762. .compare_user1_out {
  763. display: flex;
  764. align-items: center;
  765. img {
  766. width: 80px;
  767. }
  768. .compare_user1_info {
  769. display: flex;
  770. flex-direction: column;
  771. justify-content: space-around;
  772. height: 80px;
  773. margin-left: 30px;
  774. font-size: 16px;
  775. }
  776. }
  777. .compare_group {
  778. font-size: 16px;
  779. margin-top: 10px;
  780. color: #999999;
  781. }
  782. .compare_group_detail {
  783. margin-top: 10px;
  784. font-size: 16px;
  785. color: #006fff;
  786. }
  787. }
  788. .compare_user2 {
  789. margin-left: 10px;
  790. flex: 1;
  791. background-color: #fff4f2;
  792. border-radius: 20px;
  793. padding: 20px 20px;
  794. .compare_user1_out {
  795. display: flex;
  796. align-items: center;
  797. img {
  798. width: 80px;
  799. }
  800. .compare_user1_info {
  801. display: flex;
  802. flex-direction: column;
  803. justify-content: space-around;
  804. height: 80px;
  805. margin-left: 30px;
  806. font-size: 16px;
  807. }
  808. }
  809. .compare_group {
  810. font-size: 16px;
  811. margin-top: 10px;
  812. color: #999999;
  813. }
  814. .compare_group_detail {
  815. margin-top: 10px;
  816. font-size: 16px;
  817. color: #ff3014;
  818. }
  819. }
  820. }
  821. .compare_plan {
  822. margin-top: 40px;
  823. margin-bottom: 10px;
  824. display: flex;
  825. flex-direction: row;
  826. .compare_plan_out1 {
  827. flex: 1;
  828. margin-right: 10px;
  829. display: flex;
  830. justify-content: space-between;
  831. flex-direction: column;
  832. .compare_plan_time {
  833. margin-top: 6px;
  834. color: #999999;
  835. }
  836. }
  837. .compare_plan_out2 {
  838. margin-left: 10px;
  839. flex: 1;
  840. display: flex;
  841. justify-content: space-between;
  842. flex-direction: column;
  843. .compare_plan_time {
  844. margin-top: 6px;
  845. color: #999999;
  846. }
  847. }
  848. }
  849. .compare_score {
  850. display: flex;
  851. flex-direction: row;
  852. .compare_score_inner {
  853. padding-left: 20px;
  854. flex: 1;
  855. .compare_score_left_back {
  856. color: #006fff;
  857. margin-top: 20px;
  858. margin-bottom: 10px;
  859. font-size: 20px;
  860. letter-spacing: 3px;
  861. background-color: #f1f7ff;
  862. }
  863. .compare_score_right_back {
  864. color: #ff3014;
  865. margin-top: 20px;
  866. margin-bottom: 10px;
  867. font-size: 20px;
  868. letter-spacing: 3px;
  869. background-color: #fff4f2;
  870. }
  871. .compare_score_left {
  872. color: #006fff;
  873. margin-top: 20px;
  874. margin-bottom: 10px;
  875. font-size: 16px;
  876. letter-spacing: 3px;
  877. }
  878. .compare_score_right {
  879. color: #ff3014;
  880. margin-top: 20px;
  881. margin-bottom: 10px;
  882. font-size: 16px;
  883. letter-spacing: 3px;
  884. }
  885. .compare_result {
  886. font-size: 16px;
  887. letter-spacing: 3px;
  888. }
  889. .compare_result_new {
  890. font-size: 20px;
  891. letter-spacing: 3px;
  892. margin-top: 10px;
  893. .title {
  894. color: #006fff;
  895. }
  896. }
  897. }
  898. }
  899. .cpmpare_all {
  900. // height: 100px;
  901. display: flex;
  902. flex-direction: column;
  903. .dimensionality_out {
  904. display: flex;
  905. width: 100%;
  906. .left {
  907. margin-right: 10px;
  908. flex: 1;
  909. margin-top: 20px;
  910. margin-bottom: 4px;
  911. font-size: 16px;
  912. letter-spacing: 3px;
  913. background-color: #f1f7ff;
  914. .totol_all {
  915. color: #006fff;
  916. }
  917. }
  918. .right {
  919. margin-left: 10px;
  920. flex: 1;
  921. margin-top: 20px;
  922. margin-bottom: 4px;
  923. font-size: 16px;
  924. letter-spacing: 3px;
  925. background-color: #f1f7ff;
  926. .totol_all {
  927. color: #006fff;
  928. }
  929. }
  930. }
  931. .allScore_out {
  932. display: flex;
  933. width: 100%;
  934. .left {
  935. margin-right: 10px;
  936. flex: 1;
  937. // margin-top: 10px;
  938. margin-bottom: 4px;
  939. font-size: 16px;
  940. letter-spacing: 3px;
  941. // background-color: #f1f7ff;
  942. .totol_all {
  943. color: #006fff;
  944. }
  945. }
  946. .right {
  947. margin-left: 10px;
  948. flex: 1;
  949. flex: 1;
  950. // margin-top: 10px;
  951. margin-bottom: 4px;
  952. font-size: 16px;
  953. letter-spacing: 3px;
  954. // background-color: #f1f7ff;
  955. .totol_all {
  956. color: #006fff;
  957. }
  958. }
  959. }
  960. }
  961. </style>