projectEvolve.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609
  1. <template>
  2. <div class="page projectEvolvePage">
  3. <div class="timeBox">{{ time }}</div>
  4. <div class="topTiltle">
  5. <span class="title">项目进展情况</span>
  6. </div>
  7. <div class="btuGroup">
  8. <div class="topBtu topLeftBtu" @click="back()">
  9. <span class="btuText">返回&nbsp;</span>
  10. </div>
  11. <div class="topBtu topRightBtu" @click="push()">
  12. <span class="btuText">后台管理</span>
  13. </div>
  14. </div>
  15. <div class="myMain-container">
  16. <div class="tableBox">
  17. <div class="tableTiltleTextBg">
  18. <div class="tableTitle">
  19. <span class="mainTitle">项目工作进展情况</span>
  20. </div>
  21. </div>
  22. <div class="tableContent">
  23. <el-table
  24. :data="tableData"
  25. border
  26. height="calc(75vh)"
  27. style="width: 100%" :span-method="handleSpanMethod">
  28. <el-table-column
  29. prop="index"
  30. label="序号"
  31. width="80" align="center">
  32. </el-table-column>
  33. <el-table-column
  34. prop="taskContent"
  35. label="工作内容" align="center">
  36. </el-table-column>
  37. <el-table-column
  38. prop="planTime"
  39. label="计划完成时间"
  40. width="150" align="center">
  41. </el-table-column>
  42. <el-table-column
  43. prop="detailedTaskContent"
  44. label="详细工作内容">
  45. </el-table-column>
  46. <el-table-column
  47. prop="realTime"
  48. label="实际完成时间"
  49. width="130" align="center">
  50. </el-table-column>
  51. <el-table-column
  52. prop="status"
  53. label="进展状态"
  54. >
  55. </el-table-column>
  56. </el-table>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="bottomPushBtu" @click="pushPreProjectResource()">
  61. <span>前期项目资源信息</span>
  62. </div>
  63. </div>
  64. </template>
  65. <script>
  66. export default {
  67. name: "projectEvolve",
  68. data() {
  69. return {
  70. timer: null,
  71. time: '',
  72. project: {},
  73. tableData: [],
  74. // 合并单元格
  75. spanArr:[]
  76. }
  77. },
  78. destroyed() {
  79. clearInterval(this.timer)
  80. this.timer = null
  81. },
  82. mounted() {
  83. this.project = JSON.parse(this.$store.getters.projectInfo)
  84. this.formatTime()
  85. this.timer = setInterval(this.formatTime, 1000 * 60)
  86. this.getProjectEvolve()
  87. },
  88. methods: {
  89. // 获取项目进展情况
  90. getProjectEvolve() {
  91. this.spanArr = []
  92. this.tableData = [
  93. {
  94. index: '一',
  95. taskContent: '成立项目公司',
  96. planTime: '2023/2/15',
  97. detailedTaskContent: '',
  98. realTime: '',
  99. status: '已完成',
  100. },
  101. {index: '二', taskContent: '项目核准', planTime: '3月5日前必须完成', detailedTaskContent: '', realTime: '', status: '',},
  102. {
  103. index: '1',
  104. taskContent: '项目土地预审批复',
  105. planTime: '2023/2/20',
  106. detailedTaskContent: '1.修编可研,将15万千瓦改成20万千瓦',
  107. realTime: '2023/2/5',
  108. status: '已完成',
  109. },
  110. {
  111. index: '1',
  112. taskContent: '项目土地预审批复',
  113. planTime: '2023/2/20',
  114. detailedTaskContent: '2.完成场址区1:2000和升压站1:500地形图测绘',
  115. realTime: '2023/2/28',
  116. status: '正在开展',
  117. },
  118. {
  119. index: '1',
  120. taskContent: '项目土地预审批复',
  121. planTime: '2023/2/20',
  122. detailedTaskContent: '3.微观选址完成',
  123. realTime: '2023/2/15',
  124. status: '已完成',
  125. },
  126. {
  127. index: '1',
  128. taskContent: '项目土地预审批复',
  129. planTime: '2023/2/20',
  130. detailedTaskContent: '4.勘察规划选址批复',
  131. realTime: '2023/2/15',
  132. status: '已完成',
  133. },
  134. {
  135. index: '1',
  136. taskContent: '项目土地预审批复',
  137. planTime: '2023/2/20',
  138. detailedTaskContent: '5.开展土地预审招标',
  139. realTime: '2023/2/6',
  140. status: '已完成',
  141. },
  142. {
  143. index: '1',
  144. taskContent: '项目土地预审批复',
  145. planTime: '2023/2/20',
  146. detailedTaskContent: '6.开展土地预审编制',
  147. realTime: '2023/2/10',
  148. status: '已完成',
  149. },
  150. {
  151. index: '1',
  152. taskContent: '项目土地预审批复',
  153. planTime: '2023/2/20',
  154. detailedTaskContent: '7.取得土地预审批复',
  155. realTime: '2023/2/20',
  156. status: '已完成',
  157. },
  158. {
  159. index: '2',
  160. taskContent: '项目核准申请报告',
  161. planTime: '2023/2/21',
  162. detailedTaskContent: '1.编写项目核准申请文件',
  163. realTime: '2023/2/10',
  164. status: '已完成',
  165. },
  166. {
  167. index: '2',
  168. taskContent: '项目核准申请报告',
  169. planTime: '2023/2/21',
  170. detailedTaskContent: '2.编写项目申请报告(建设方案)',
  171. realTime: '2023/2/10',
  172. status: '已完成',
  173. },
  174. {
  175. index: '2',
  176. taskContent: '项目核准申请报告',
  177. planTime: '2023/2/21',
  178. detailedTaskContent: '3.获取土地预审后上报到依兰县发改局',
  179. realTime: '2023/2/10',
  180. status: '已完成',
  181. },
  182. {
  183. index: '3',
  184. taskContent: '相关支持文件:可研报告、环评报告、水保报告',
  185. planTime: '2023/2/20',
  186. detailedTaskContent: '1.修编可研后将收资材料给环评、水保单位编制完成报告后提报批复',
  187. realTime: '2023/2/10',
  188. status: '已完成',
  189. },
  190. {
  191. index: '3',
  192. taskContent: '相关支持文件:可研报告、环评报告、水保报告',
  193. planTime: '2023/2/20',
  194. detailedTaskContent: '2.编制环评、水保文件',
  195. realTime: '2023/2/20',
  196. status: '已完成',
  197. },
  198. {
  199. index: '4',
  200. taskContent: '地方发改委申报',
  201. planTime: '2023/2/25',
  202. detailedTaskContent: '将建设方案和土地预审上报地方后进行跟踪督办',
  203. realTime: '2023/2/25',
  204. status: '已完成',
  205. },
  206. {
  207. index: '5',
  208. taskContent: '黑龙江省发改委批复',
  209. planTime: '2023/3/5',
  210. detailedTaskContent: '',
  211. realTime: '',
  212. status: '已完成',
  213. },
  214. {index: '三', taskContent: '投资决策', planTime: '3月20日前必须完成', detailedTaskContent: '', realTime: '', status: '',},
  215. {
  216. index: '1',
  217. taskContent: '可研完成审查',
  218. planTime: '2023/3/10',
  219. detailedTaskContent: '1.修编可研深度',
  220. realTime: '2023/2/10',
  221. status: '已完成',
  222. },
  223. {
  224. index: '1',
  225. taskContent: '可研完成审查',
  226. planTime: '2023/3/10',
  227. detailedTaskContent: '1.1连续一年的测风数据',
  228. realTime: '已完成',
  229. status: '依兰四期利用依兰三期测风数据',
  230. },
  231. {
  232. index: '1',
  233. taskContent: '可研完成审查',
  234. planTime: '2023/3/10',
  235. detailedTaskContent: '1.2完成1:2000地形图测绘',
  236. realTime: '2023/2/28',
  237. status: '正在开展,计划7日完成。',
  238. },
  239. {
  240. index: '1',
  241. taskContent: '可研完成审查',
  242. planTime: '2023/3/10',
  243. detailedTaskContent: '1.3地质勘测工作',
  244. realTime: '2023/2/28',
  245. status: '现阶段完成初勘',
  246. },
  247. {
  248. index: '1',
  249. taskContent: '可研完成审查',
  250. planTime: '2023/3/10',
  251. detailedTaskContent: '1.4完成现场踏勘和初步的机位选址',
  252. realTime: '2023/2/28',
  253. status: '已完成',
  254. },
  255. {
  256. index: '1',
  257. taskContent: '可研完成审查',
  258. planTime: '2023/3/10',
  259. detailedTaskContent: '1.5完成可研阶段风电机组布机方案',
  260. realTime: '2023/2/28',
  261. status: '已完成',
  262. },
  263. {
  264. index: '1',
  265. taskContent: '可研完成审查',
  266. planTime: '2023/3/10',
  267. detailedTaskContent: '2.根据审查条件准备支撑材料',
  268. realTime: '2023/2/15',
  269. status: '正在收资',
  270. },
  271. {
  272. index: '1',
  273. taskContent: '可研完成审查',
  274. planTime: '2023/3/10',
  275. detailedTaskContent: '2.1完成环评报告',
  276. realTime: '2023/2/20',
  277. status: '已完成',
  278. },
  279. {
  280. index: '1',
  281. taskContent: '可研完成审查',
  282. planTime: '2023/3/10',
  283. detailedTaskContent: '2.2完成水保报告',
  284. realTime: '2023/2/20',
  285. status: '已完成',
  286. },
  287. {
  288. index: '1',
  289. taskContent: '可研完成审查',
  290. planTime: '2023/3/10',
  291. detailedTaskContent: '2.3取得土地预审批复',
  292. realTime: '2023/2/20',
  293. status: '已完成',
  294. },
  295. {
  296. index: '1',
  297. taskContent: '可研完成审查',
  298. planTime: '2023/3/10',
  299. detailedTaskContent: '3.上报集团技经中心开展审查',
  300. realTime: '2023/2/20',
  301. status: '正在开展',
  302. },
  303. {
  304. index: '1',
  305. taskContent: '可研完成审查',
  306. planTime: '2023/3/10',
  307. detailedTaskContent: '4.取得审查意见',
  308. realTime: '2023/3/10',
  309. status: '完成核准,为快速完成,需要带条件进行审查',
  310. },
  311. {
  312. index: '2',
  313. taskContent: '环评批复',
  314. planTime: '2023/3/10',
  315. detailedTaskContent: '过程跟踪,督办环评开展情况',
  316. realTime: '2023/3/10',
  317. status: '前期转工程后,确定机位,开展批复工作',
  318. },
  319. {
  320. index: '3',
  321. taskContent: '水土保持批复',
  322. planTime: '2023/3/10',
  323. detailedTaskContent: '过程跟踪,督办水保开展情况',
  324. realTime: '2023/3/10',
  325. status: '前期转工程后,确定机位,开展批复工作',
  326. },
  327. {
  328. index: '4',
  329. taskContent: '接入系统获得经研院评审意见',
  330. planTime: '2023/3/15',
  331. detailedTaskContent: '1.开展招标工作',
  332. realTime: '2023/2/10',
  333. status: '已完成',
  334. },
  335. {
  336. index: '4',
  337. taskContent: '接入系统获得经研院评审意见',
  338. planTime: '2023/3/15',
  339. detailedTaskContent: '2.接入系统设计报告编制',
  340. realTime: '2023/3/10',
  341. status: '已完成',
  342. },
  343. {
  344. index: '4',
  345. taskContent: '接入系统获得经研院评审意见',
  346. planTime: '2023/3/15',
  347. detailedTaskContent: '3.上报国网公司进行评审申请',
  348. realTime: '2023/3/11',
  349. status: '已完成',
  350. },
  351. {
  352. index: '4',
  353. taskContent: '接入系统获得经研院评审意见',
  354. planTime: '2023/3/15',
  355. detailedTaskContent: '4.获取初步会议纪要',
  356. realTime: '2023/3/15',
  357. status: '本年接入系统为重大难点,无法确认时间',
  358. },
  359. {
  360. index: '5',
  361. taskContent: '获得集团投资计划',
  362. planTime: '2023/3/15',
  363. detailedTaskContent: '',
  364. realTime: '',
  365. status: '',
  366. },
  367. {index: '6', taskContent: '主设备选型', planTime: '2023/3/15', detailedTaskContent: '', realTime: '', status: '',},
  368. {index: '7', taskContent: '上报投资决策', planTime: '2023/3/15', detailedTaskContent: '', realTime: '', status: '',},
  369. ]
  370. this.spanArr = this.merge()
  371. },
  372. // 找相同的列
  373. merge() {
  374. let spanArr = []
  375. let concat = 0
  376. this.tableData.forEach((item, index) => {
  377. if (index === 0) {
  378. spanArr.push(1);
  379. } else {
  380. if (item.taskContent === this.tableData[index - 1].taskContent) { //第一列需合并相同内容的判断条件
  381. spanArr[concat] += 1;
  382. spanArr.push(0);
  383. } else {
  384. spanArr.push(1);
  385. concat = index;
  386. }
  387. }
  388. });
  389. return spanArr
  390. },
  391. // 合并单元格
  392. handleSpanMethod({rowIndex, columnIndex}) {
  393. if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2) {
  394. const _row = this.spanArr[rowIndex];
  395. const _col = _row > 0 ? 1 : 0;
  396. return {
  397. rowspan: _row,
  398. colspan: _col
  399. };
  400. }
  401. },
  402. push() {
  403. this.$router.push({path: "/dataQuery/windTowerStatusInfo"})
  404. },
  405. back() {
  406. this.$router.push({path: "/homepage/projectInfo"})
  407. },
  408. pushPreProjectResource() {
  409. this.$router.push({path: "/homepage/preProjectResources"})
  410. },
  411. rowStyle({row, rowIndex}) {
  412. if ((rowIndex+1) % 2 === 0) {
  413. return {
  414. background: '#0F4465',
  415. color: '#ffffff'
  416. }
  417. } else {
  418. return {
  419. background: '#25748A',
  420. color: '#ffffff'
  421. }
  422. }
  423. },
  424. /*时间格式化*/
  425. formatTime() {
  426. this.time = ''
  427. let date = new Date()
  428. let year = date.getFullYear(); // 年
  429. let month = date.getMonth() + 1; // 月
  430. let day = date.getDate();
  431. let hour = date.getHours(); // 获取当前小时数(0-23)
  432. let minutes = date.getMinutes();
  433. if (month < 10) month = "0" + month;
  434. if (day < 10) day = "0" + day;
  435. if (minutes < 10) minutes = "0" + minutes;
  436. this.time = year + "-" + month + "-" + day + " " + hour + ' : ' + minutes;
  437. }
  438. }
  439. }
  440. </script>
  441. <style scoped>
  442. .projectEvolvePage {
  443. width: 100%;
  444. height: calc(100vh);
  445. background: url(../../../assets/largeScreenImg/backBg.png) no-repeat;
  446. background-size: 100% 100%;
  447. color: white;
  448. }
  449. .timeBox {
  450. position: absolute;
  451. left: 2%;
  452. top: 0;
  453. font-size: 20px;
  454. line-height: 40px;
  455. font-family: timeFont !important;
  456. }
  457. .page {
  458. position: fixed;
  459. top: 0;
  460. left: 0;
  461. bottom: 0;
  462. right: 0;
  463. overflow: auto;
  464. box-shadow: inset -1px -20px 550px 200px rgb(12 25 69 / 80%);
  465. }
  466. .topTiltle {
  467. width: 100%;
  468. height: 5.5%;
  469. background: url(../../../assets/largeScreenImg/index/topTitleBg.png) -2px -1px no-repeat;
  470. background-size: 100% 100%;
  471. display: flex;
  472. justify-content: center;
  473. }
  474. .title {
  475. width: 17%;
  476. height: 100%;
  477. text-align: center;
  478. margin-top: .2%;
  479. font-size: 30px;
  480. font-weight: 800;
  481. background-image: linear-gradient(
  482. 360deg,
  483. rgba(178, 204, 252, 1) 0,
  484. rgba(178, 204, 252, 1) 0,
  485. rgba(255, 255, 255, 1) 100%,
  486. rgba(255, 255, 255, 1) 100%
  487. );
  488. background-clip: text;
  489. color: transparent;
  490. }
  491. .btuGroup {
  492. position: absolute;
  493. right: 0;
  494. top: 0;
  495. color: white;
  496. width: 15%;
  497. height: 5.5%;
  498. display: flex;
  499. justify-content: flex-end;
  500. font-size: 18px;
  501. }
  502. .topBtu {
  503. height: 100%;
  504. margin-top: -1.5%;
  505. display: flex;
  506. justify-content: center;
  507. align-items: center;
  508. cursor: pointer;
  509. }
  510. .topRightBtu {
  511. background: url(../../../assets/largeScreenImg/index/topRightBtuBg.png) 100% no-repeat;
  512. background-size: 100% 100%;
  513. width: 50%;
  514. }
  515. .topLeftBtu {
  516. background: url(../../../assets/largeScreenImg/index/topLeftBtuBg.png) 100% no-repeat;
  517. background-size: 100% 100%;
  518. width: 35%;
  519. }
  520. .myMain-container {
  521. display: flex;
  522. justify-content: center;
  523. }
  524. .tableBox {
  525. width: 95%;
  526. height: calc(90vh);
  527. background: url(../../../assets/largeScreenImg/index/leftTextBg.png) 100% no-repeat;
  528. background-size: 100% 100%;
  529. padding: 2%;
  530. }
  531. .tableTiltleTextBg {
  532. height: 32px;
  533. background: url(../../../assets/largeScreenImg/zaiyunAndqianqi/projectEvolveTitleBg.png) 100% no-repeat;
  534. background-size: 100% 100%;
  535. }
  536. .tableTitle {
  537. color: rgba(183, 243, 252, 1);
  538. font-size: 20px;
  539. font-weight: 550;
  540. margin-left: 2%;
  541. position: relative;
  542. top: -25%;
  543. }
  544. .tableContent {
  545. margin-top: 2%;
  546. }
  547. .tableContent /deep/ .el-table .el-table__header-wrapper th, .el-table .el-table__fixed-header-wrapper th {
  548. background: #16354c;
  549. text-align: center;
  550. color: white;
  551. }
  552. .tableContent /deep/ .el-table tr{
  553. background: #16354c;
  554. color: white;
  555. }
  556. .tableContent /deep/ .el-table tr:hover >td{
  557. background: #16354c;
  558. color: white;
  559. }
  560. .tableContent /deep/ .el-table__body-wrapper::-webkit-scrollbar {
  561. width: 8px; /*滚动条宽度*/
  562. height: 12px; /*滚动条高度*/
  563. }
  564. .tableContent /deep/ .el-table__body-wrapper::-webkit-scrollbar-track {
  565. -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  566. border-radius: 10px; /*滚动条的背景区域的圆角*/
  567. background-color: #eeeeee; /*滚动条的背景颜色*/
  568. }
  569. .tableContent /deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {
  570. border-radius: 10px; /*滚动条的圆角*/
  571. -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  572. background-color: #0a3b6e; /*滚动条的背景颜色*/
  573. }
  574. .tableContent /deep/ .el-table colgroup col[name='gutter']{
  575. width: 9px;
  576. }
  577. .tableContent /deep/ .el-table__body{
  578. width: 100% !important;
  579. }
  580. .bottomPushBtu {
  581. background: url(../../../assets/largeScreenImg/index/topLeftBtuBg.png) 100% no-repeat;
  582. background-size: 100% 100%;
  583. line-height: 60px;
  584. width: 12%;
  585. cursor: pointer;
  586. text-align: center;
  587. position: absolute;
  588. right: 0;
  589. bottom: -.5%;
  590. }
  591. </style>