individualTendency.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014
  1. <template>
  2. <div class="record-warp">
  3. <div class="record-main">
  4. <!-- <img src="../../../assets/report/lv.png" alt=""> -->
  5. <el-row>
  6. <el-col :span="24">
  7. <div class="search-head">
  8. <el-select
  9. :clearable="true"
  10. v-model="year"
  11. placeholder="请选择年份"
  12. @clear="yearChange"
  13. @change="yearChange"
  14. >
  15. <el-option
  16. v-for="item in optionsYear"
  17. :key="item.value"
  18. :label="item.label"
  19. :value="item.value"
  20. >
  21. </el-option>
  22. </el-select>
  23. <el-button v-show="isJump" @click="backParent" style="border-radius: 20px;margin-left:20px"> 返回</el-button>
  24. </div>
  25. </el-col>
  26. </el-row>
  27. <div v-show="!isUser">
  28. <div
  29. style="
  30. text-align: center;
  31. font-size: 16px;
  32. font-weight: 700;
  33. margin-bottom: 10px;
  34. margin-top: 10px;
  35. "
  36. >
  37. {{ userInfoLin.userName
  38. }}<span v-show="year != ''">{{ year }}年</span>近10次趋势统计
  39. </div>
  40. <div style="width: 100%; height: 70vh" class="block_lei">
  41. <PerQSChart
  42. :options="qsOptionzz1"
  43. name=""
  44. refCurrent="qsOptionzz1"
  45. v-show="hasData"
  46. />
  47. <div
  48. style="
  49. width: 100%;
  50. height: 100%;
  51. display: flex;
  52. justify-content: center;
  53. align-items: center;
  54. "
  55. v-show="!hasData"
  56. >
  57. <div style="line-height: 100%">暂无数据</div>
  58. </div>
  59. </div>
  60. <!-- 时间选择框 -->
  61. <!-- 选择时间
  62. <el-date-picker
  63. style='margin-top:80px'
  64. v-model="year"
  65. type="monthrange"
  66. range-separator="至"
  67. start-placeholder="开始月份"
  68. end-placeholder="结束月份"
  69. >
  70. </el-date-picker> -->
  71. <!-- <div
  72. style="
  73. text-align: center;
  74. font-size: 16px;
  75. font-weight: 700;
  76. margin-bottom: 20px;
  77. "
  78. >
  79. 趋势统计
  80. </div>
  81. <div style="width: 100%; height: 70vh" class="block_lei">
  82. <QSChart :options="qsOptionzz2" name="" refCurrent="qsOptionzz2" />
  83. </div> -->
  84. </div>
  85. </div>
  86. </div>
  87. </template>
  88. <script>
  89. import PerQSChart from "../../components/PerQSChart.vue";
  90. import { oSessionStorage } from "../../utils/utils";
  91. import { basePath } from "../../utils/http";
  92. import userImgActive from "../../assets/report/lv.png";
  93. import userImgDefault from "../../assets/report/white.png";
  94. import * as echarts from "echarts";
  95. export default {
  96. name: "individualTendency",
  97. components: { PerQSChart: PerQSChart },
  98. data() {
  99. return {
  100. //是否是其他页面跳转过来的
  101. isJump: false,
  102. //判断是用户还是计划对比
  103. isUser: false,
  104. //用户背景图
  105. userImg: userImgActive,
  106. //计划背景图
  107. planImg: userImgDefault,
  108. basePath: basePath,
  109. //上传文件的弹出款的标志
  110. fileVisible: false,
  111. //判断点击的是重置密码还是点击删除
  112. isDelete: false,
  113. //重置密码需要调用个userId
  114. userId: "",
  115. //充值密码使用userName
  116. userName: "",
  117. //重置密码弹出框
  118. resetVisible: false,
  119. //根据名称搜索
  120. planName: "",
  121. name: "",
  122. //搜索的用户编号
  123. studentNumber: "",
  124. //搜索的组织架构
  125. // 搜索需要的性别
  126. sex: "",
  127. group: "",
  128. ppData: [],
  129. groupData: [],
  130. options: [
  131. {
  132. value: "1",
  133. label: "选项1",
  134. children: [
  135. {
  136. value: "11",
  137. label: "选项11",
  138. children: [{ value: "111", label: "选项111" }],
  139. },
  140. ],
  141. },
  142. ],
  143. centerDialogVisible: false,
  144. editUserFlag: false,
  145. startTime: "",
  146. endTime: "",
  147. value1: null,
  148. total: 0,
  149. pageSize: 10,
  150. pageNum: 1,
  151. keyword: "",
  152. tableData: [],
  153. userInfo: {}, //用户信息
  154. invitationCode: "",
  155. roleType: "0",
  156. type: 0,
  157. view: {
  158. name: "",
  159. studentNumber: "",
  160. sex: "",
  161. orgName: "",
  162. },
  163. channel: "",
  164. channelList: [{ name: "渠道天成", id: "1" }],
  165. choosePlanVisible: false,
  166. currentPlanId: "",
  167. comparePlanList: [],
  168. chooseComparePlanList: [],
  169. formInline: {},
  170. option_zhu: {},
  171. echarts_zhu: "",
  172. echarts_zhu_time: "",
  173. //选项
  174. qsOptionzz1: { nameList: [], scoreList: [] },
  175. qsOptionzz2: { nameList: [], scoreList: [] },
  176. qsOptiongr1: { nameList: [], scoreList: [] },
  177. qsOptiongr2: { nameList: [], scoreList: [] },
  178. year: "",
  179. optionsYear: [
  180. {
  181. label: "2021年",
  182. value: 2021,
  183. },
  184. {
  185. label: "2022年",
  186. value: 2022,
  187. },
  188. {
  189. label: "2023年",
  190. value: 2023,
  191. },
  192. ],
  193. hasData: false,
  194. userInfoLin: {},
  195. };
  196. },
  197. created() {},
  198. async mounted() {
  199. this.userInfo = JSON.parse(oSessionStorage.getItem("userInfo"));
  200. //根据用户ID查询用户信息
  201. if (!this.userInfo) {
  202. //如果用户信息不存在跳转登陆页
  203. this.$router.push({ path: "/" });
  204. }
  205. //判断当页面是 isUser为false时需要调用判断方法
  206. if (!this.isUser) {
  207. let obj = await this.queryUserDetail();
  208. if (obj) {
  209. this.userInfoLin = obj;
  210. }
  211. this.initGroup();
  212. }
  213. },
  214. methods: {
  215. //返回父级
  216. backParent() {
  217. let user = JSON.parse(sessionStorage.getItem("individualTendency"));
  218. user.isBack = true;
  219. sessionStorage.setItem("individualTendency", JSON.stringify(user));
  220. if (user.rouName == "planReport") {
  221. let url = "/manage/planReport";
  222. this.bus.$emit("menuStatusUpdate", url);
  223. this.$router.push({
  224. path: "/manage/planReport",
  225. });
  226. }
  227. //generalSituation
  228. if(user.rouName == "generalSituation"){
  229. //
  230. let url = "/manage/generalSituation";
  231. this.bus.$emit("menuStatusUpdate", url);
  232. this.$router.push({
  233. path: "/manage/generalSituation",
  234. });
  235. }
  236. },
  237. queryUserDetail() {
  238. //调用接口访问-----
  239. //根据userNo 查询
  240. // this.userInfoLin
  241. let user = JSON.parse(sessionStorage.getItem("individualTendency"));
  242. // debugger;
  243. //判断有没有属性isBack 如果有的话需要
  244. //就是从其他页面回来的
  245. if (user.hasOwnProperty("isBack")) {
  246. //
  247. this.isJump = true;
  248. }
  249. //判断是哪个页面过来的,到时候还需要返回回去
  250. return new Promise((solve, reject) => {
  251. let url = `/user/findUserByUserNo?userNo=${user.userNo}`;
  252. this.$http.get(url, {}, (res) => {
  253. if (res.code == 200) {
  254. //设置变量
  255. solve(res.data);
  256. } else {
  257. reject(0);
  258. }
  259. });
  260. });
  261. },
  262. yearChange(val) {
  263. this.query4Score();
  264. },
  265. //查询4个维度的值
  266. async query4Score() {
  267. let list = ["抑郁", "焦虑", "压力", "视觉整合能力"];
  268. //抑郁集合
  269. let listDepressed = [];
  270. //焦虑组合
  271. let listAnxiety = [];
  272. //压力集合
  273. let listStress = [];
  274. //视觉整合能力
  275. let listSj = [];
  276. for (let i = 0; i < list.length; i++) {
  277. //抑郁集合
  278. if (list[i] == "抑郁") {
  279. listDepressed = await this.queryDetailScore(list[i]);
  280. }
  281. //焦虑集合
  282. if (list[i] == "焦虑") {
  283. listAnxiety = await this.queryDetailScore(list[i]);
  284. }
  285. //压力集合
  286. if (list[i] == "压力") {
  287. listStress = await this.queryDetailScore(list[i]);
  288. }
  289. //视觉能力集合
  290. if (list[i] == "视觉整合能力") {
  291. listSj = await this.queryDetailScore(list[i]);
  292. }
  293. }
  294. //判断抑郁长度为0是,需要提示暂无数据
  295. //焦虑
  296. // console.log(listAnxiety);
  297. // //抑郁
  298. // console.log(listDepressed);
  299. // //压力
  300. // console.log(listStress);
  301. // //视觉整合能力
  302. // console.log(listSj);
  303. //将4个数组转化为 需要渲染的格式
  304. //判断现在没数据的话
  305. //当返回数据为空数组时--显示暂无数据字样
  306. if (listAnxiety.length == 0) {
  307. //显示暂无数据字样
  308. //显示暂无数据模样
  309. this.hasData = false;
  310. } else {
  311. this.hasData = true;
  312. let nameList = [];
  313. let scoreList = [];
  314. // listAnxiety
  315. //焦虑数据重组
  316. let listAnxietyTmp = [];
  317. for (let i = 0; i < listAnxiety.length; i++) {
  318. listAnxietyTmp.push(listAnxiety[i].dimScore);
  319. nameList.push(listAnxiety[i].name);
  320. }
  321. //抑郁数据重组
  322. let listDepressedTmp = [];
  323. for (let i = 0; i < listDepressed.length; i++) {
  324. listDepressedTmp.push(listDepressed[i].dimScore);
  325. }
  326. //压力数据重组
  327. let listStressTmp = [];
  328. for (let i = 0; i < listStress.length; i++) {
  329. listStressTmp.push(listStress[i].dimScore);
  330. }
  331. //视觉整合能力数据重组
  332. let listSjTmp = [];
  333. for (let i = 0; i < listSj.length; i++) {
  334. listSjTmp.push(listSj[i].dimScore);
  335. }
  336. scoreList = [
  337. {
  338. name: "焦虑",
  339. type: "line",
  340. stack: "Total",
  341. data: listAnxietyTmp,
  342. symbolSize: 6,
  343. lineStyle: {
  344. // type: "dashed",
  345. width: 3,
  346. },
  347. },
  348. {
  349. name: "抑郁",
  350. type: "line",
  351. data: listDepressedTmp,
  352. symbolSize: 6,
  353. lineStyle: {
  354. // type: "dashed",
  355. width: 3,
  356. },
  357. },
  358. {
  359. name: "压力",
  360. type: "line",
  361. data: listStressTmp,
  362. symbolSize: 6,
  363. lineStyle: {
  364. // type: "dashed",
  365. width: 3,
  366. },
  367. },
  368. {
  369. name: "视觉整合能力",
  370. type: "line",
  371. data: listSjTmp,
  372. symbolSize: 6,
  373. lineStyle: {
  374. type: "dashed",
  375. width: 3,
  376. },
  377. },
  378. ];
  379. //----------------在这里设置显示echarts 图
  380. //在这里改变数组状态
  381. // this.echarts_zhu = this.$refs.echarts_zhu;
  382. // this.option_zhu.xAxis.data = nameList;
  383. // this.option_zhu.series = scoreList;
  384. // echarts.init(this.echarts_zhu).setOption(this.option_zhu);
  385. this.qsOptionzz1 = { nameList: nameList, scoreList: scoreList };
  386. //根据时间选择
  387. this.qsOptionzz2 = { nameList: nameList, scoreList: scoreList };
  388. // this.echarts_zhu_time = this.$refs.echarts_zhu_time;
  389. // this.option_zhu.xAxis.data = nameList;
  390. // this.option_zhu.series = scoreList;
  391. // echarts.init(this.echarts_zhu_time).setOption(this.option_zhu);
  392. }
  393. },
  394. // 查询当前组织的届数----现在只是这个班应该是只有一个级数
  395. //拿到这个班的级数
  396. //当你查人的时候---你这个级数是固定的--相当于还有还是只有一个
  397. //
  398. queryDetailScore(val) {
  399. // this.group[this.group.length - 1]
  400. return new Promise((solve, reject) => {
  401. let url = `/userRecordScore/countUserTrend?dimName=${val}&userNo=${
  402. this.userInfoLin.userNo
  403. }${this.year != "" ? `&year=${this.year}` : ""}`;
  404. this.$http.get(url, {}, (res) => {
  405. if (res.code == 200) {
  406. solve(res.data);
  407. } else {
  408. reject([]);
  409. }
  410. });
  411. });
  412. },
  413. groupCompare(val) {
  414. //打开群体报告统计页面
  415. this.$refs.groupUser.open(val);
  416. },
  417. titleFormatter(val) {
  418. if (val.planStatus == "1") {
  419. return "计划未开始";
  420. } else if (val.planStatus == "2") {
  421. return "计划进行中";
  422. }
  423. if (val.enable == "0") {
  424. return "当前计划未授权";
  425. }
  426. },
  427. isClikcObj(val) {
  428. this.isUser = val;
  429. //
  430. if (val) {
  431. this.userImg = userImgActive;
  432. this.planImg = userImgDefault;
  433. } else {
  434. this.planImg = userImgActive;
  435. this.userImg = userImgDefault;
  436. }
  437. if (this.isUser) {
  438. this.group = [];
  439. this.searchTarget();
  440. } else {
  441. //组织
  442. //默认选择第一个
  443. this.initGroup();
  444. // this.queryDetailScore();
  445. }
  446. },
  447. initGroup() {
  448. // 最新的级数
  449. let ji = parseInt(this.userInfoLin.grade);
  450. //获取当前年
  451. let currentYear = new Date().getFullYear();
  452. if (ji == -1) {
  453. //则显示近10年
  454. let list = [];
  455. for (let i = currentYear - 5; i <= currentYear; i++) {
  456. let obj = {
  457. label: `${i}年`,
  458. value: i,
  459. };
  460. list.push(obj);
  461. }
  462. this.optionsYear = list;
  463. } else {
  464. if (currentYear == ji) {
  465. this.optionsYear = [
  466. {
  467. label: `${currentYear}年`,
  468. value: ji,
  469. },
  470. ];
  471. } else {
  472. let list = [];
  473. for (let i = ji; i <= currentYear; i++) {
  474. let obj = {
  475. label: `${i}年`,
  476. value: i,
  477. };
  478. list.push(obj);
  479. }
  480. this.optionsYear = list;
  481. // this.year = list[0].value;
  482. }
  483. }
  484. //判断级数是和当前年相同吗
  485. this.query4Score();
  486. },
  487. planReport(val) {
  488. this.$refs.planProfession.open(val);
  489. },
  490. forMaPlan(val) {
  491. if (val.planStatus == "1") {
  492. return "未开始";
  493. //
  494. } else if (val.planStatus == "2") {
  495. //
  496. return "进行中";
  497. } else if (val.planStatus == "3") {
  498. //
  499. return "已完成";
  500. }
  501. },
  502. //文件上传成功
  503. fileSuccess(res) {
  504. if (res.code == 200) {
  505. this.searchTarget();
  506. this.$message({
  507. message: res.msg,
  508. type: "success",
  509. });
  510. } else {
  511. this.$message({
  512. message: res.msg,
  513. type: "error",
  514. });
  515. }
  516. //查询列表
  517. },
  518. //文件上传失败
  519. fileError() {
  520. this.$message({
  521. message: "上传失败",
  522. type: "error",
  523. });
  524. },
  525. cancle() {
  526. this.resetVisible = false;
  527. },
  528. //提交文本
  529. submitCom() {
  530. //判断当前是否是
  531. if (this.isDelete) {
  532. this.deleteUser();
  533. //调用删除方法
  534. } else {
  535. this.resetFun();
  536. // 调用重置密码方法
  537. }
  538. },
  539. //性别---
  540. genderFun(val) {
  541. let sex = val.gender;
  542. if (sex == "1") {
  543. return "男";
  544. } else if (sex == "0") {
  545. return "女";
  546. } else {
  547. return sex;
  548. }
  549. },
  550. //每页多少条
  551. handleSizeChange(val) {
  552. this.pageSize = val;
  553. this.searchTarget();
  554. //将首页重置为1时---且总条数变化
  555. //设置为当前总条数
  556. },
  557. //获取组织架构方法--------------------开始-----------------------
  558. //z增加
  559. addPro(val) {
  560. let data = JSON.parse(JSON.stringify(val));
  561. for (let i = 0; i < val.length; i++) {
  562. data[i].value = val[i].orgNo;
  563. data[i].label = val[i].orgName;
  564. }
  565. return data;
  566. },
  567. //非递归方式:将平铺数据转换为树形结构数据
  568. arrToTree(arr) {
  569. let data = arr.filter((item) => {
  570. item.children = arr.filter((e) => {
  571. return item.orgNo === e.parentOrgNo;
  572. });
  573. return this.userInfo.orgNo == item.orgNo;
  574. // return !item.parentOrgNo;
  575. });
  576. return data;
  577. },
  578. //去除转换树形结构数据后存在的空children
  579. deleteChildren(arr) {
  580. let childs = arr;
  581. for (let i = childs.length; i--; i > 0) {
  582. if (childs[i].children) {
  583. if (childs[i].children.length) {
  584. this.deleteChildren(childs[i].children);
  585. } else {
  586. delete childs[i].children;
  587. }
  588. }
  589. }
  590. return arr;
  591. },
  592. //获取组织架构方法--------------------结束-----------------------
  593. formatterDelete(row) {
  594. if (row.state == 0) {
  595. return "已删除";
  596. } else {
  597. return "正常";
  598. }
  599. },
  600. resetUser(flag, val) {
  601. this.resetVisible = true;
  602. this.isDelete = flag;
  603. this.userId = val.id;
  604. this.userName = val.userName;
  605. //当前用户id
  606. //重置密码
  607. },
  608. editUser(row) {
  609. this.editRegisterUser(row);
  610. },
  611. viewUser(row) {
  612. this.view.name = row.userName;
  613. this.view.studentNumber = row.userNo;
  614. this.view.sex = row.gender == "0" ? "女" : "男";
  615. this.view.orgName = row.orgName;
  616. this.centerDialogVisible = true;
  617. },
  618. planUser(val) {
  619. if (this.userInfo.roleType != "5") {
  620. if (val.enable == "0") {
  621. this.$message({
  622. type: "error",
  623. message: "暂未授权",
  624. });
  625. return;
  626. }
  627. }
  628. this.$refs.planUser.open(val);
  629. },
  630. addUser(val) {
  631. this.addRegisterUser(val);
  632. },
  633. clearSearch() {
  634. this.name = "";
  635. //搜索的用户编号
  636. this.studentNumber = "";
  637. //搜索的组织架构
  638. // 搜索需要的性别
  639. this.planName = "";
  640. this.group = "";
  641. this.searchTarget();
  642. },
  643. addRegisterUser(val) {
  644. this.$refs.register.open(val);
  645. },
  646. editRegisterUser(val) {
  647. this.$refs.register.edit(val);
  648. },
  649. handleCurrentChange(val) {
  650. this.pageNum = val;
  651. this.searchList();
  652. },
  653. //根据现有情况进行搜索
  654. searchList() {
  655. let url;
  656. if (this.isUser) {
  657. url = `/user/findUserListByPage?pageSize=${this.pageSize}&pageNum=${
  658. this.pageNum
  659. }&roleType=1${
  660. this.group.length == 0
  661. ? `&orgNo=${this.userInfo.orgNo}`
  662. : `&orgNo=${this.group[this.group.length - 1]}`
  663. }${this.name == "" ? "" : `&userName=${this.name}`}${
  664. this.studentNumber == "" ? "" : `&userNo=${this.studentNumber}`
  665. }`;
  666. } else {
  667. url = `/plan/findListByPage?pageSize=${this.pageSize}&pageNum=${this.pageNum}${
  668. this.planName == "" ? "" : `&planName=${this.planName}`
  669. }${
  670. this.group.length == 0
  671. ? `&orgNo=${this.userInfo.orgNo}`
  672. : `&orgNo=${this.group[this.group.length - 1]}`
  673. }`;
  674. }
  675. this.$http.get(url, {}, (res) => {
  676. if (res && res.code == 200) {
  677. this.tableData = res.data.content;
  678. this.total = res.data.totalElements;
  679. } else {
  680. // this.$toast.fail(res.msg);
  681. this.$message.error(res.msg);
  682. }
  683. });
  684. },
  685. searchTarget() {
  686. // this.group
  687. //判断是趋势用户
  688. if (this.isUser) {
  689. this.pageNum = 1;
  690. this.searchList();
  691. } else {
  692. // this.queryDetailScore("压力");
  693. this.query4Score();
  694. }
  695. },
  696. //跳转首页
  697. goHome() {
  698. this.$router.push({ path: "/home" });
  699. },
  700. //跳转记录页
  701. goRecord() {
  702. this.$router.push({ path: "/record" });
  703. },
  704. //退出登陆
  705. logout() {
  706. oSessionStorage.removeItem("userInfo");
  707. oSessionStorage.removeItem("token");
  708. this.$router.push({ path: "/" });
  709. },
  710. //点击获取月出勤次数
  711. getTimes(param) {
  712. this.monthTimes = param;
  713. },
  714. // 专业报告对比
  715. compareReport(val) {
  716. //查看当前用户---角色
  717. //如果当前角色运维管理员
  718. if (this.userInfo.roleType != "5") {
  719. if (val.enable == "0") {
  720. this.$message({
  721. type: "error",
  722. message: "暂未授权",
  723. });
  724. return;
  725. }
  726. }
  727. // if(val.enable=='0'){
  728. // this.$message({
  729. // type:'error',
  730. // message:'暂未授权'
  731. // })
  732. // return
  733. // }
  734. //查看传输参数
  735. sessionStorage.setItem("comparePlanInfo", JSON.stringify(val));
  736. this.$router.push("/manage/comparePlanProfession");
  737. },
  738. // 筛选已完成计划
  739. filterComplete() {
  740. this.comparePlanList = this.tableData.filter((item) => {
  741. return item.planStatus == 3 && item.id != this.currentPlanId;
  742. });
  743. },
  744. selectHandle(selection, row) {
  745. this.$refs.multipleTable.clearSelection();
  746. this.$refs.multipleTable.toggleRowSelection(row);
  747. this.chooseComparePlanList[1] = row;
  748. },
  749. chooseEnsure() {
  750. this.choosePlanVisible = false;
  751. this.$refs.planProfession.open(this.chooseComparePlanList);
  752. },
  753. chooseCancel() {
  754. this.choosePlanVisible = false;
  755. this.chooseComparePlanList = [];
  756. },
  757. },
  758. };
  759. </script>
  760. <style lang="less" scoped>
  761. @import "../../styles/theme.less";
  762. .pag_class {
  763. text-align: end;
  764. }
  765. .pag_class /deep/.el-input__inner {
  766. width: 100% !important;
  767. }
  768. .pag_class /deep/.el-pagination--small span:not([class*="suffix"]) {
  769. height: 22px;
  770. line-height: 28px !important;
  771. }
  772. .record-warp {
  773. position: relative;
  774. width: 100%;
  775. height: 80vh;
  776. .compare_out {
  777. line-height: 40px;
  778. position: absolute;
  779. top: -42px;
  780. display: flex;
  781. // background-color: #00bf78;
  782. .user {
  783. cursor: pointer;
  784. position: relative;
  785. span {
  786. top: -5px;
  787. left: 19px;
  788. font-weight: 700;
  789. }
  790. // background-image: image("../.");
  791. // background-color: #00bf78;
  792. // background-image: url("../../../assets/report/lv.png");
  793. // background-size: cover;
  794. // background-repeat: no-repeat;
  795. }
  796. }
  797. .record-main {
  798. width: 100%;
  799. height: 100%;
  800. box-sizing: border-box;
  801. overflow-y: auto;
  802. display: flex;
  803. flex-direction: column;
  804. .search-head {
  805. width: 100%;
  806. display: flex;
  807. flex-direction: row;
  808. justify-content: flex-start;
  809. align-items: center;
  810. .zc-title {
  811. color: #606266;
  812. font-size: 14px;
  813. }
  814. }
  815. .table-content {
  816. margin: 10px 0;
  817. flex: 1;
  818. overflow-y: auto;
  819. }
  820. }
  821. }
  822. .add_user_class {
  823. margin-top: 10px;
  824. }
  825. .user_out {
  826. display: flex;
  827. width: 100%;
  828. align-items: center;
  829. border: 1px solid #eeeeef;
  830. line-height: 50px;
  831. margin-top: 10px;
  832. }
  833. .user_out_sub {
  834. flex: 1;
  835. background-color: #fafafa;
  836. text-align: center;
  837. // color:#ffffff
  838. }
  839. .user_out_subNext {
  840. padding-left: 10px;
  841. flex: 3;
  842. }
  843. .detail_button_out {
  844. flex: 1;
  845. display: flex;
  846. // justify-content: space-around;
  847. justify-content: flex-start;
  848. .detail_button {
  849. display: flex;
  850. align-items: center;
  851. cursor: pointer;
  852. letter-spacing: 2px;
  853. img {
  854. width: 15px;
  855. margin-right: 5px;
  856. }
  857. span {
  858. color: #00bf78;
  859. // font-weight: 600;
  860. }
  861. }
  862. }
  863. .detail_button_out_dis {
  864. flex: 1;
  865. display: flex;
  866. // justify-content: space-around;
  867. justify-content: flex-start;
  868. .detail_button_dis {
  869. display: flex;
  870. align-items: center;
  871. cursor: not-allowed;
  872. letter-spacing: 2px;
  873. img {
  874. width: 15px;
  875. margin-right: 5px;
  876. }
  877. span {
  878. color: #d1d1d1;
  879. // font-weight: 600;
  880. }
  881. }
  882. }
  883. //弹出框样式
  884. .dig_update /deep/.el-cascader {
  885. position: relative;
  886. font-size: 14px;
  887. line-height: 40px;
  888. width: 100%;
  889. }
  890. .dig_update /deep/.el-dialog {
  891. box-shadow: none !important;
  892. background: transparent !important;
  893. }
  894. .demo-ruleForm /deep/ .el-form-item {
  895. margin-right: 10px;
  896. vertical-align: top;
  897. display: flex !important;
  898. flex-direction: column;
  899. }
  900. .demo-ruleForm /deep/.el-dialog__header {
  901. background-color: #ffffff;
  902. padding-left: 140px !important;
  903. }
  904. .demo-ruleForm /deep/.el-form-item__label {
  905. text-align: left;
  906. vertical-align: middle;
  907. float: left;
  908. font-size: 14px;
  909. color: #606266;
  910. line-height: 40px;
  911. padding: 0 12px 0 0;
  912. -webkit-box-sizing: border-box;
  913. box-sizing: border-box;
  914. }
  915. .demo-ruleForm /deep/.el-input {
  916. width: 100% !important;
  917. }
  918. .demo-ruleForm /deep/.el-input__inner {
  919. width: 100% !important;
  920. background-color: #f7f7f7;
  921. border: 0px;
  922. }
  923. .dig_button {
  924. margin-top: 40px;
  925. display: flex;
  926. width: 100%;
  927. justify-content: space-around;
  928. }
  929. .demo-ruleForm {
  930. background-color: #ffffff;
  931. // border-radius: 20px;
  932. margin-right: -10px;
  933. margin-top: -10px;
  934. padding-right: 100px;
  935. padding-left: 100px;
  936. border-radius: 20px;
  937. padding-top: 20px;
  938. padding-bottom: 20px;
  939. .dig_title {
  940. margin-bottom: 30px;
  941. text-align: center;
  942. font-weight: 700;
  943. }
  944. }
  945. .btn_area {
  946. padding: 36px 0 0;
  947. text-align: center;
  948. }
  949. </style>