detail.jsp 78 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <jsp:include page="../../common/common-meta-include.jsp"></jsp:include>
  7. <jsp:include page="../../common/common-js-include.jsp"></jsp:include>
  8. <jsp:include page="../../common/common-css-include.jsp"></jsp:include>
  9. <!--[if lt IE 9]>
  10. <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
  11. <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
  12. <![endif]-->
  13. <style type="text/css">
  14. .page-main {
  15. padding: 10px 40px;
  16. box-sizing: border-box;
  17. }
  18. .table_box h2 {
  19. /*margin: 20px 0 10px;*/
  20. height: 25px;
  21. width: 200px;
  22. font-size: 16px;
  23. color: #1c56a3;
  24. }
  25. #addAmt {
  26. font-size: 50px;
  27. }
  28. .layui-form-label {
  29. color: #6e6f80 !important;
  30. }
  31. .subject-info-title {
  32. display: flex;
  33. align-items: flex-start;
  34. justify-content: space-between;
  35. padding: 9px 0;
  36. }
  37. .btn-form-label {
  38. margin-top: 4px;
  39. }
  40. .subject-info-text {
  41. margin-top: 3px;
  42. }
  43. .subject-info-detail {
  44. width: fit-content;
  45. min-width: 90px;
  46. height: 30px;
  47. margin-left: 30px;
  48. padding: 0 10px;
  49. box-sizing: border-box;
  50. line-height: 30px;
  51. text-align: center;
  52. font-size: 16px;
  53. color: #fff;
  54. background: #0b9ee2;
  55. border-radius: 5px;
  56. cursor: pointer;
  57. }
  58. .status-box {
  59. display: flex;
  60. align-items: center;
  61. margin: 9px 0 9px 216px;
  62. background: #f2f2f2;
  63. }
  64. .week-box {
  65. display: flex;
  66. align-items: center;
  67. }
  68. /* 覆盖95%宽度限制 */
  69. .table_box .layui-row {
  70. width: 100%;
  71. max-width: 100%;
  72. }
  73. /* 模块 */
  74. .module-box {
  75. /* display: flex; */
  76. width: 100%;
  77. min-height: 50px;
  78. padding: 0 20px;
  79. box-sizing: border-box;
  80. background: rgba(160, 207, 255, 0.15);
  81. border-radius: 10px;
  82. }
  83. .double-module {
  84. width: 49%;
  85. }
  86. /* 新版样式 */
  87. .page-title {
  88. font-weight: 500;
  89. font-size: 18px;
  90. color: #0F4082;
  91. }
  92. .right-content {
  93. display: flex;
  94. justify-content: space-between;
  95. width: 100%;
  96. }
  97. .table_box {
  98. display: flex;
  99. justify-content: flex-start;
  100. align-items: center;
  101. gap: 106px;
  102. padding: 0;
  103. border-radius: 0;
  104. }
  105. .process-pie-layer{
  106. display: flex;
  107. flex-direction: column;
  108. align-items: center;
  109. justify-content: center;
  110. gap: 5px;
  111. font-size: 12px;
  112. font-weight: normal;
  113. color: #333333;
  114. line-height: 16px;
  115. }
  116. .process-pie-layer .img {
  117. display: flex;
  118. justify-content: center;
  119. align-items: center;
  120. width: 100px;
  121. height: 60px;
  122. background: #F5F5F5;
  123. border-radius: 3px 3px 3px 3px;
  124. border: 1px solid #DDDDDD;
  125. cursor: pointer;
  126. }
  127. .process-pie-layer .img img{
  128. width: 32px;
  129. height: 32px;
  130. }
  131. .layui-table-view .layui-table {
  132. width: 100%;
  133. }
  134. .layui-table-box {
  135. border: none;
  136. }
  137. .table_box .layui-table-header {
  138. height: 60px;
  139. }
  140. .layui-table-header .layui-table th {
  141. /*height: 60px;*/
  142. background: rgba(28, 86, 163, 0.2);
  143. font-size: 14px;
  144. color: #1C56A3;
  145. font-weight: bold;
  146. }
  147. .layui-table tr {
  148. /*height: 51px;*/
  149. border-bottom: 1px solid rgba(28, 86, 163, 0.15);
  150. }
  151. .layui-table-view .layui-table td {
  152. font-size: 14px;
  153. color: #333333;
  154. background-color: #E7EEF6;
  155. }
  156. .table_box .layui-table-hover,
  157. .table_box .layui-table[lay-even] tr:nth-child(even) {
  158. background-color: #E7EEF6;
  159. }
  160. .layui-table tbody tr:hover,
  161. .layui-table thead tr,
  162. .layui-table-click,
  163. .layui-table-header,
  164. .layui-table-hover,
  165. .layui-table-mend,
  166. .layui-table-patch,
  167. .layui-table-tool,
  168. .layui-table-total,
  169. .layui-table-total tr,
  170. .layui-table[lay-even] tr:nth-child(even) {
  171. background-color: #E7EEF6;
  172. }
  173. .page-btn {
  174. height: 32px;
  175. text-align: center;
  176. line-height: 32px;
  177. font-weight: 500;
  178. font-size: 14px;
  179. color: #FFF;
  180. background: #2C6EC6;
  181. border-radius: 5px;
  182. cursor: pointer;
  183. padding: 0 10px;
  184. white-space: nowrap;
  185. }
  186. .page-btn-ban {
  187. color: #999;
  188. background: #F5F5F5 !important;
  189. }
  190. .page-btn-pass {
  191. background: #00BB55 !important;
  192. }
  193. .page-btn-special {
  194. background: #FFAA01 !important;
  195. }
  196. .layui-colla-content {
  197. padding: 0;
  198. background: none;
  199. border: none;
  200. }
  201. .subject-subname {
  202. font-weight: bold;
  203. font-size: 14px;
  204. color: #333333;
  205. line-height: 28px;
  206. cursor: pointer;
  207. }
  208. .subject-subname:hover{
  209. color: #2B6EC6 !important;
  210. }
  211. .subject-department {
  212. display: flex;
  213. justify-content: space-between;
  214. width: 44%;
  215. margin-top: 10px;
  216. }
  217. .subject-department-name {
  218. display: flex;
  219. justify-content: flex-start;
  220. align-items: center;
  221. margin-top: 11px;
  222. font-weight: 400;
  223. font-size: 14px;
  224. color: #999;
  225. white-space: nowrap;
  226. }
  227. .subject-department-name span {
  228. color: #333;
  229. white-space: nowrap;
  230. }
  231. .process-box {
  232. width: 100%;
  233. min-height: 200px;
  234. }
  235. .process-item {
  236. display: flex;
  237. width: 100%;
  238. min-height: 50px;
  239. margin-bottom: 20px;
  240. }
  241. .process-item-2 {
  242. /*height: 162px;*/
  243. margin-bottom: 26px;
  244. }
  245. .process-item-3 {
  246. /*height: 432px;*/
  247. margin-bottom: 13px;
  248. }
  249. .process-item-4 {
  250. height: auto;
  251. width: 500px;
  252. /*margin-bottom: 26px;*/
  253. margin-right: 37px;
  254. display: flex;
  255. flex-direction: column;
  256. }
  257. .process-index {
  258. display: flex;
  259. flex-direction: column;
  260. align-items: center;
  261. /*width: 80px;*/
  262. margin-right: 20px;
  263. margin-left: 6px;
  264. }
  265. .process-spe{
  266. flex-direction: row;
  267. margin-bottom: 10px;
  268. }
  269. .process-spe .process-index-icon{
  270. margin-right: 5px;
  271. }
  272. .process-spe .process-index-name{
  273. margin-right: 5px;
  274. }
  275. .spe-line{
  276. border-bottom: 1px dashed #2B6EC6;
  277. }
  278. .process-index-icon {
  279. width: 24px;
  280. height: 24px;
  281. text-align: center;
  282. line-height: 24px;
  283. font-weight: bold;
  284. font-size: 14px;
  285. color: #FFFFFF;
  286. border-radius: 50%;
  287. background: #2C6EC6;
  288. }
  289. .process-index-name {
  290. min-width: 56px;
  291. margin-top: 3px;
  292. font-weight: 300;
  293. font-size: 14px;
  294. color: #1C56A3;
  295. }
  296. .process-index-line {
  297. position: relative;
  298. flex-grow: 1;
  299. width: 0px;
  300. border-right: 1px dashed #2B6EC6;
  301. }
  302. .process-index-arrow{
  303. width: 3px;
  304. height: 3px;
  305. border: 1px dashed #2B6EC6;
  306. border-right: none;
  307. border-bottom: none;
  308. transform: rotate(135deg);
  309. }
  310. /* 禁用 */
  311. .process-ban .process-index-icon {
  312. background: #999;
  313. }
  314. .process-ban .process-index-name {
  315. color: #999;
  316. }
  317. .process-ban .process-index-line {
  318. border-right: 1px dashed #999;
  319. }
  320. .process-ban .process-index-arrow {
  321. border: 1px dashed #999 !important;
  322. border-right: none !important;
  323. border-bottom: none !important;
  324. }
  325. /*完成*/
  326. .process-conplete .process-index-icon {
  327. background: #00BB55 !important;
  328. }
  329. .process-conplete .process-index-name {
  330. color: #00BB55 !important;
  331. }
  332. .process-conplete .process-index-line {
  333. border-right: 1px dashed #00BB55 !important;
  334. }
  335. .process-conplete .spe-line{
  336. border-bottom: 1px dashed #00BB55 !important;
  337. }
  338. .process-conplete .process-index-arrow {
  339. border: 1px dashed #00BB55 !important;
  340. border-right: none !important;
  341. border-bottom: none !important;
  342. }
  343. .status-line {
  344. display: flex;
  345. align-items: center;
  346. width: 100%;
  347. }
  348. .status-icon {
  349. padding: 2px;
  350. position: relative;
  351. margin-right: 10px;
  352. box-sizing: border-box;
  353. font-weight: 500;
  354. text-align: center;
  355. font-size: 11px;
  356. color: #FFF;
  357. line-height: 1.5;
  358. background: #00BB55;
  359. border-radius: 3px;
  360. }
  361. .status-icon-decorate {
  362. position: absolute;
  363. top: 7px;
  364. right: -8px;
  365. border-left: 4px solid #00BB55;
  366. border-right: 4px solid transparent;
  367. border-top: 4px solid transparent;
  368. border-bottom: 4px solid transparent;
  369. }
  370. .status-decorate-special {
  371. border-left: 6px solid #FFAA01;
  372. }
  373. .status-text {
  374. height: 28px;
  375. line-height: 28px;
  376. font-weight: 300;
  377. font-size: 14px;
  378. color: #00BB55;
  379. }
  380. .status-text-ban {
  381. color: #999;
  382. }
  383. /* 手续盒子 */
  384. .formalities {
  385. display: flex;
  386. justify-content: space-between;
  387. width: 100%;
  388. margin-top: 29px;
  389. }
  390. .formalities-box {
  391. text-align: center;
  392. }
  393. .formalities-box-value {
  394. /*height: 41px;*/
  395. font-weight: bold;
  396. font-size: 16px;
  397. /*line-height: 36px;*/
  398. color: #1C56A3;
  399. }
  400. .formalities-box-title {
  401. margin-top: 2px;
  402. height: 33px;
  403. font-weight: 300;
  404. font-size: 14px;
  405. color: #333333;
  406. line-height: 28px;
  407. white-space: nowrap;
  408. margin: 0 13px;
  409. }
  410. .apply-item {
  411. display: flex;
  412. align-items: center;
  413. margin-left: 20px;
  414. font-weight: 300;
  415. font-size: 14px;
  416. color: #999999;
  417. white-space: nowrap;
  418. }
  419. .apply-person {
  420. margin-left: 50px;
  421. }
  422. .apply-item-value {
  423. margin-left: 10px;
  424. color: #333;
  425. }
  426. .report-big {
  427. display: flex;
  428. justify-content: space-between;
  429. margin-top: 51px;
  430. }
  431. .report-title {
  432. height: 14px;
  433. margin-bottom: 19px;
  434. font-weight: 500;
  435. font-size: 14px;
  436. color: #999999;
  437. line-height: 28px;
  438. }
  439. .report-box {
  440. display: flex;
  441. flex-wrap: wrap;
  442. width: 390px;
  443. cursor: pointer;
  444. }
  445. .report-box-month {
  446. width: 270px;
  447. }
  448. .report-item {
  449. margin: 0 -1px -1px 0;
  450. padding: 8px;
  451. box-sizing: border-box;
  452. background: #F5F5F5;
  453. border: 1px solid #CCCCCC;
  454. }
  455. .report-item-title {
  456. display: flex;
  457. align-items: center;
  458. justify-content: center;
  459. width: 100%;
  460. font-weight: 500;
  461. font-size: 14px;
  462. /*line-height: 29px;*/
  463. color: #333333;
  464. }
  465. .report-item-status {
  466. /*width: 80px;*/
  467. /*height: 30px;*/
  468. padding: 0px 5px;
  469. margin-left: 10px;
  470. font-weight: 300;
  471. font-size: 12px;
  472. color: #FFFFFF;
  473. /*text-align: center;*/
  474. line-height: 1.3;
  475. background: #FFAA01;
  476. border-right: 3px;
  477. }
  478. .report-status-done {
  479. background: #00BB55;
  480. }
  481. .report-item-time {
  482. width: 100%;
  483. /*margin-top: 20px;*/
  484. font-weight: 300;
  485. font-size: 14px;
  486. color: #999999;
  487. text-align: center;
  488. /*height: 24px;*/
  489. /*line-height: 29px;*/
  490. }
  491. .report-done {
  492. background: rgba(44, 110, 198, 0.1);
  493. border: 1px solid #1C56A3;
  494. margin:0 -1px -1px 0;
  495. z-index: 1;
  496. }
  497. .report-done .report-item-title,
  498. .report-done .report-item-time {
  499. color: #1C56A3;
  500. }
  501. .year-big {
  502. width: 100%;
  503. height: auto;
  504. background: rgba(28, 86, 163, 0.1);
  505. }
  506. .year-title {
  507. display: flex;
  508. justify-content: space-between;
  509. align-items: center;
  510. margin: 13px 19px 0 24px;
  511. box-sizing: border-box;
  512. }
  513. .year-title-text {
  514. font-weight: 500;
  515. font-size: 16px;
  516. color: #1C56A3;
  517. }
  518. .year-choose-box {
  519. display: flex;
  520. align-items: center;
  521. justify-content: space-between;
  522. margin: 16px 0 16px;
  523. padding: 0 10px;
  524. }
  525. .jihuazj {
  526. display: flex;
  527. align-items: center;
  528. }
  529. .year-choose {
  530. padding-top: 15px;
  531. padding-left: 7px;
  532. background: rgba(28, 86, 163, 0.1);
  533. width: auto;
  534. height: 40px;
  535. border-radius: 3px 3px 0px 0px;
  536. border-bottom: 1px solid #C9D8E9;
  537. cursor: pointer;
  538. }
  539. .year-choose input {
  540. height: 100%;
  541. font-size: 14px;
  542. padding-left: 20px;
  543. cursor: pointer;
  544. }
  545. .year-choose-intro {
  546. width: auto;
  547. font-size: 14px;
  548. color: #333333;
  549. line-height: 24px;
  550. text-align: left;
  551. }
  552. .year-choose-value {
  553. margin-left: 24px;
  554. font-weight: 500;
  555. font-size: 16px;
  556. color: #1C56A3;
  557. }
  558. .year-choose-unit {
  559. font-size: 14px;
  560. }
  561. .button-active {
  562. height: 102% !important;
  563. font-weight: bold !important;
  564. color: #2B6EC6 !important;
  565. background: #E7EEF6 !important;
  566. padding-bottom: 1px !important;
  567. border-bottom: 0 !important;
  568. }
  569. .button-item {
  570. margin-bottom: -1px;
  571. padding: 0 10px;
  572. width: auto;
  573. margin-left: -1px;
  574. height: 100%;
  575. background: #F5F5F5;
  576. border-radius: 0px 0px 0px 0px;
  577. border: 1px solid #C9D8E9;
  578. border-bottom: none;
  579. font-weight: 300;
  580. font-size: 14px;
  581. color: #999999;
  582. cursor: pointer;
  583. }
  584. .process-content,
  585. .progress-big{
  586. width: 100%;
  587. }
  588. </style>
  589. </head>
  590. <body>
  591. <div id="app"></div>
  592. <input type="hidden" id="subId" value="${subId}"/>
  593. <input type="hidden" id="amtYear" value="${amtYear}"/>
  594. <template id="template">
  595. <div class="page-main">
  596. <div class="right_title">
  597. <h2 class="page-title">项目信息</h2>
  598. </div>
  599. <div class="right-content">
  600. <div class="progress-big">
  601. <form class="layui-form" lay-filter="formData">
  602. <div class="layui-colla-content layui-show" style="height: auto">
  603. <div class="table_box" style="margin-bottom: 25px;">
  604. <div>
  605. <div class="subject-subname" @click="subInfoDetail">{{subInfo.subName}}</div>
  606. <div class="subject-department">
  607. <div class="subject-department-name">
  608. 监管单位:<span>{{subInfo.mainName}}</span>
  609. </div>
  610. <%-- <div class="page-btn" @click="subInfoDetail">项目详情</div>--%>
  611. </div>
  612. </div>
  613. <div class="process-pie-layer" @click="showPdf">
  614. <div class="img"><img src="${WebSite.asset}/css/images/flow.jpg" width="100%" height="100%"></div>
  615. <div>查看管理流程图</div>
  616. </div>
  617. </div>
  618. <div class="process-box" style="display: flex">
  619. <div class="process-item process-item-4">
  620. <div class="process-index process-spe" :class="ndjhtx ? 'process-conplete':''" :class="(!ndjhtx) ? '':'process-ban'">
  621. <div class="process-index-icon">1</div>
  622. <div class="process-index-name">年度计划</div>
  623. <div class="process-index-line spe-line"></div>
  624. <div class="process-index-arrow"></div>
  625. </div>
  626. <div class="process-content">
  627. <div class="year-big">
  628. <form class="layui-form" lay-filter="formData2" action=""
  629. onkeydown="if(event.keyCode==13){return false;}">
  630. <div class="year-choose">
  631. <button type="button" class="button-item" :class="item==planYear?'button-active':''" v-for="(item,index) in yearsArray" :key="index" @click="clickYear(item)">{{item}}年度</button>
  632. </div>
  633. <div class="year-choose-box">
  634. <div class="jihuazj">
  635. <div class="year-choose-intro">计划</div>
  636. <div class="year-choose-value">
  637. {{plan.planAmtYear}}
  638. <span class="year-choose-unit">(万元)</span>
  639. </div>
  640. </div>
  641. <div class="page-btn year-title-btn" lay-submit lay-filter="save">保存
  642. </div>
  643. </div>
  644. <div class="layui-colla-content layui-show" style="height: auto;">
  645. <div class="table_progress" style="padding-top: 0;">
  646. <table id="amtPlan" lay-filter="amtPlan"></table>
  647. </div>
  648. </div>
  649. </form>
  650. </div>
  651. </div>
  652. </div>
  653. <%-- ||subInfo.status === '6'||subInfo.status === '7' || subInfo.status === '8'--%>
  654. <div style="width: calc(100% - 420px)">
  655. <div class="process-item process-item-1" :class="(subInfo.status !== '1') ? 'process-conplete':''" :class="(subInfo.status === '1' && ndjhtx) ? '':'process-ban'">
  656. <div class="process-index">
  657. <div class="process-index-icon">2</div>
  658. <div class="process-index-name">项目准备</div>
  659. <div class="process-index-line"></div>
  660. <div class="process-index-arrow" style="transform: rotate(-135deg)"></div>
  661. </div>
  662. <div class="process-content">
  663. <div class="status-line">
  664. <div class="status-icon">
  665. <div class="status-icon-decorate"></div>
  666. 当前状态
  667. </div>
  668. <div class="status-text">{{preInfo.statusName}}</div>
  669. </div>
  670. <div class="formalities">
  671. <div class="formalities-box">
  672. <div class="formalities-box-value">{{preInfo.sumNum}}</div>
  673. <div class="formalities-box-title">总的手续</div>
  674. </div>
  675. <div class="formalities-box">
  676. <div class="formalities-box-value">{{preInfo.noNum}}</div>
  677. <div class="formalities-box-title">无需办理手续</div>
  678. </div>
  679. <div class="formalities-box">
  680. <div class="formalities-box-value">
  681. {{preInfo.processNum}}
  682. </div>
  683. <div class="formalities-box-title">办理中的手续</div>
  684. </div>
  685. <div class="formalities-box">
  686. <div class="formalities-box-value">
  687. {{preInfo.endNum}}
  688. </div>
  689. <div class="formalities-box-title">已办理完成手续</div>
  690. </div>
  691. <div class="formalities-box">
  692. <div class="page-btn" @click="toPre" v-if="ndjhtx">进入办理</div>
  693. <span v-if="!ndjhtx" style="color: red;">年度计划未填写,请先填写年度计划,再进行手续办理!</span>
  694. </div>
  695. </div>
  696. </div>
  697. </div>
  698. <div class="process-item process-item-2" :class="(subInfo.status !== '6') ? 'process-conplete':''" :class="(subInfo.status === '6') ? '':'process-ban'">
  699. <div class="process-index">
  700. <div class="process-index-icon">3</div>
  701. <div class="process-index-name">开工申请</div>
  702. <div class="process-index-line"></div>
  703. <div class="process-index-arrow" style="transform: rotate(-135deg)"></div>
  704. </div>
  705. <div class="process-content">
  706. <div class="status-line" style="margin-top:12px;">
  707. <div class="page-btn" @click="toOpen"
  708. v-if="subInfo.status==='6'&& open.status==='0'">
  709. 开工申请
  710. </div>
  711. <div class="page-btn page-btn-ban"
  712. v-if="subInfo.status==='6'&& open.status==='1'">
  713. 申请中…
  714. </div>
  715. <div class="page-btn page-btn-pass"
  716. v-if="subInfo.status==='6'&& open.status==='2'">
  717. 审核通过
  718. </div>
  719. <div class="page-btn page-btn-ban" v-if="subInfo.status !=='6'">
  720. {{open.statusName}}
  721. </div>
  722. <div class="apply-item">
  723. 开工申请时间
  724. <div class="apply-item-value">{{open.dateSq}}</div>
  725. </div>
  726. <div class="apply-item apply-person">
  727. 申请人
  728. <div class="apply-item-value">{{open.nameSqr}}</div>
  729. </div>
  730. </div>
  731. <div class="status-line" style="margin-top:21px;">
  732. <div class="status-text" :class="open.status === '1'?'status-text-ban':''"
  733. style="height: 33px;line-height: 36px;">{{open.statusName}}
  734. </div>
  735. </div>
  736. </div>
  737. </div>
  738. <div class="process-item process-item-3"
  739. :class="(subInfo.status === '7' || subInfo.status === '8') ? '':'process-ban'"
  740. :class="(subInfo.status === 'A' || subInfo.status === '8') ? 'process-conplete':''">
  741. <div class="process-index">
  742. <div class="process-index-icon">4</div>
  743. <div class="process-index-name">施工阶段</div>
  744. <%-- <div class="process-index-line"></div>--%>
  745. </div>
  746. <div class="process-content" style="border:none;">
  747. <div class="status-line"
  748. style="justify-content:space-between;">
  749. <div style="display:flex;">
  750. <div class="status-icon page-btn-special" style="height: 21px">
  751. <div class="status-icon-decorate status-decorate-special"></div>
  752. 当前状态
  753. </div>
  754. <div class="status-text" style="margin-right:10px">
  755. {{comp.process}}{{comp.statusName}}
  756. </div>
  757. </div>
  758. <div style="display:flex">
  759. <div class="page-btn" @click="toComp" v-if="subInfo.status === '7'">
  760. 竣工验收申请
  761. </div>
  762. <div class="page-btn page-btn-special" style="margin-left:6px"
  763. @click="toOpenComp"
  764. v-if="subInfo.status === '7' ">
  765. 停工
  766. </div>
  767. <div class="page-btn page-btn-special" style="margin-left:6px"
  768. @click="toOpenComp"
  769. v-if="subInfo.status === '8' ">
  770. 开工
  771. </div>
  772. </div>
  773. </div>
  774. <div class="report-big">
  775. <div>
  776. <div class="report-title">近四周周报情况</div>
  777. <div class="report-box">
  778. <div class="report-item report-done"
  779. @click="weekReport(week[0].beginDate)">
  780. <div class="report-item-title">
  781. 本周
  782. <div class="report-item-status"
  783. :class="week[0].status==='1'?'report-status-done':''">
  784. {{week[0].statusName}}
  785. </div>
  786. </div>
  787. <div class="report-item-time">{{week[0].kjMonth }}</div>
  788. </div>
  789. <div class="report-item" @click="weekReport(week[1].beginDate)">
  790. <div class="report-item-title">
  791. 前一周周报
  792. <div class="report-item-status"
  793. :class="week[1].status==='1'?'report-status-done':''">
  794. {{week[1].statusName}}
  795. </div>
  796. </div>
  797. <div class="report-item-time">{{week[1].kjMonth }}</div>
  798. </div>
  799. <div class="report-item" @click="weekReport(week[2].beginDate)">
  800. <div class="report-item-title">
  801. 前二周周报
  802. <div class="report-item-status"
  803. :class="week[2].status==='1'?'report-status-done':''">
  804. {{week[2].statusName}}
  805. </div>
  806. </div>
  807. <div class="report-item-time">{{week[2].kjMonth }}</div>
  808. </div>
  809. <div class="report-item" @click="weekReport(week[3].beginDate)">
  810. <div class="report-item-title">
  811. 前三周周报
  812. <div class="report-item-status"
  813. :class="week[3].status==='1'?'report-status-done':''">
  814. {{week[3].statusName}}
  815. </div>
  816. </div>
  817. <div class="report-item-time">{{week[3].kjMonth }}</div>
  818. </div>
  819. </div>
  820. </div>
  821. <div>
  822. <div class="report-title">近两个月月报情况</div>
  823. <div class="report-box report-box-month" style="width: 155px">
  824. <div class="report-item report-done"
  825. @click="monthReport(month[0].beginDate)">
  826. <div class="report-item-title">
  827. 写本月月报
  828. <div class="report-item-status"
  829. :class="month[0].status==='1'?'report-status-done':''">
  830. {{ month[0].statusName }}
  831. </div>
  832. </div>
  833. <div class="report-item-time">{{ month[0].kjMonth }}
  834. </div>
  835. </div>
  836. <div class="report-item" @click="monthReport(month[1].beginDate)">
  837. <div class="report-item-title">
  838. 上一月月报
  839. <div class="report-item-status"
  840. :class="month[1].status==='1'?'report-status-done':''">
  841. {{ month[1].statusName }}
  842. </div>
  843. </div>
  844. <div class="report-item-time">{{ month[1].kjMonth }}
  845. </div>
  846. </div>
  847. </div>
  848. </div>
  849. </div>
  850. </div>
  851. </div>
  852. </div>
  853. </div>
  854. <div class="layui-row">
  855. <div class="layui-col-xs12 layui-col-sm12" style="display: none">
  856. <div class="layui-form-item">
  857. <label class="layui-form-label" style="width: 186px; margin-left: 30px">年度计划投资金额(万元):</label>
  858. <div class="layui-input-block" style="margin-left: 246px">
  859. <input type="number" placeholder="请输入" autocomplete="off" class="layui-input"
  860. v-model="subInfo.amtYear"/>
  861. </div>
  862. </div>
  863. </div>
  864. </div>
  865. <div class="layui-row">
  866. <div class="layui-col-xs6 layui-col-sm6" style="display: none">
  867. <div class="layui-form-item">
  868. <label class="layui-form-label" style="width: 186px; margin-left: 30px">年度计划投资金额(万元):</label>
  869. <div class="layui-input-block" style="margin-left: 246px">
  870. <input type="number" placeholder="请输入" autocomplete="off" class="layui-input"
  871. v-model="subInfo.amtYear"/>
  872. </div>
  873. </div>
  874. </div>
  875. </div>
  876. </div>
  877. </form>
  878. </div>
  879. </div>
  880. <div id="openAndEndDate" class="layuimini-main" style="display: none;">
  881. <form class="layui-form" lay-filter="openForm">
  882. <div class="layui-row">
  883. <div class="layui-col-xs12 layui-col-sm12">
  884. <div class="layui-form-item">
  885. <label class="layui-form-label">日期:</label>
  886. <div class="layui-input-block ">
  887. <input type="text" id="openDate" name="openDate" autocomplete="off" class="layui-input">
  888. </div>
  889. </div>
  890. </div>
  891. </div>
  892. </form>
  893. </div>
  894. </div>
  895. </template>
  896. <script type="text/text" id="amtToolBar">
  897. <div class="toolBar">
  898. <span javascript:void(0);lay-event="delAmt">删除</span>
  899. </div>
  900. </script>
  901. <script type="text/html" id="toolBar">
  902. <div class="toolBar">
  903. <span lay-event="delPlan">删除</span>
  904. </div>
  905. </script>
  906. <script type="text/javascript">
  907. new Vue({
  908. el: "#app",
  909. template: "#template",
  910. data: {
  911. tabActive: 1,
  912. roleCode:'${roleCode}',
  913. subInfo: {
  914. subjectId: "",
  915. indusKind: "",
  916. mainId: "",
  917. is3Kg: "",
  918. employNumbers: "",
  919. subName: "",
  920. kindNature: "",
  921. isRk: "1",
  922. propKind: "3",
  923. kind: "",
  924. },
  925. unitName: "",
  926. preInfo: {},
  927. sumNum: "",
  928. plan: {},
  929. open: {},
  930. kindAmt: {},
  931. testAmt: "",
  932. testAmtName: "",
  933. amtSource: [],
  934. comp: {},
  935. week: [{
  936. kjMonth: ""
  937. }, {
  938. kjMonth: ""
  939. }, {
  940. kjMonth: ""
  941. }, {
  942. kjMonth: ""
  943. }],
  944. month: [{
  945. kjMonth: ""
  946. }, {
  947. kjMonth: ""
  948. }],
  949. weekAndMonth: {},
  950. planYear: "",
  951. yearsArray:[],
  952. delAmtSource: [],
  953. closeMark: false,
  954. edit: false,
  955. kindSelect: null,
  956. num: 1,
  957. ndjhtx:false,
  958. /* currSelectMainName: "",
  959. currSelectHyflName: "" */
  960. },
  961. mounted: function () {
  962. this.init();
  963. },
  964. methods: {
  965. init: function () {
  966. var self = this;
  967. layui.laydate.render({
  968. elem: "#planStart1",
  969. type: "date",
  970. theme: layDateTheme,
  971. done: function (value) {
  972. if (self.subInfo.endDate != null) {
  973. var endDate = new Date(self.subInfo.endDate);
  974. var beginDate = new Date(value);
  975. if (endDate >= beginDate) {
  976. self.subInfo.beginDate = value;
  977. } else {
  978. layer.msg("开始时间必须小于结束时间");
  979. self.subInfo.beginDate = value;
  980. }
  981. } else {
  982. self.subInfo.beginDate = value;
  983. }
  984. },
  985. });
  986. layui.laydate.render({
  987. elem: "#planEnd1",
  988. type: "date",
  989. theme: layDateTheme,
  990. done: function (value) {
  991. if (self.subInfo.beginDate != null) {
  992. var endDate = new Date(value);
  993. var beginDate = new Date(self.subInfo.beginDate);
  994. if (beginDate <= endDate) {
  995. self.subInfo.endDate = value;
  996. } else {
  997. layer.msg("结束时间必须大于开始时间");
  998. self.subInfo.endDate = value;
  999. }
  1000. } else {
  1001. self.subInfo.endDate = value;
  1002. }
  1003. },
  1004. });
  1005. // layui.form.on("select(planYearPlus)", function (data) {
  1006. // self.selectYearPlan(data.value);
  1007. // });
  1008. var nowdate = new Date();
  1009. nowdate.setMonth(nowdate.getMonth() + 1);
  1010. var y = nowdate.getFullYear();
  1011. var m = nowdate.getMonth() + 1;
  1012. var d = nowdate.getDate();
  1013. var formatwdate = y + '-' + m + '-' + d;
  1014. layui.laydate.render({
  1015. elem: '#openDate',
  1016. theme: layDateTheme,
  1017. value: formatwdate
  1018. });
  1019. layui.form.on("radio(isRk)", function (data) {
  1020. self.subInfo.isRk = data.value;
  1021. });
  1022. layui.form.on("submit(amtConfirm)", function (obj) {
  1023. var amt = $("#zjAmt").val();
  1024. if (!isNumber(amt) || Number(amt) < 0) {
  1025. App.msg.warn("请填写正数的金额");
  1026. return;
  1027. }
  1028. var amtSj = $("#zjAmtSj").val();
  1029. if (!isNumber(amtSj) || Number(amtSj) < 0) {
  1030. App.msg.warn("请填写正数的到位金额");
  1031. return;
  1032. }
  1033. //获取选择的值。
  1034. if (
  1035. self.amtSource.filter((item, index) => {
  1036. return item.sourceId == self.testAmt;
  1037. }).length > 0
  1038. ) {
  1039. //存在,阻断
  1040. App.msg.warn("该类型已被选择");
  1041. } else {
  1042. self.amtSource.push({
  1043. sourceId: self.testAmt,
  1044. sourceName: self.testAmtName,
  1045. amt: amt,
  1046. amtSj: amtSj,
  1047. });
  1048. self.initAmtSource();
  1049. self.closePane();
  1050. }
  1051. });
  1052. layui.form.on("select(subjectId)", function (data) {
  1053. var ztdw = $("#subjectId option:checked").attr("ztdw");
  1054. self.subInfo.subjectId = data.value;
  1055. self.subInfo.mainId = ztdw;
  1056. });
  1057. layui.form.on("select(kindNature)", function (data) {
  1058. self.subInfo.kindNature = data.value;
  1059. self.chooseTzxz(data.value);
  1060. });
  1061. layui.form.on("select(is3Kg)", function (data) {
  1062. self.subInfo.is3Kg = data.value;
  1063. });
  1064. // var kind = [];
  1065. // this.kindSelect = layui.xmSelect.render({
  1066. // el:'#kind',
  1067. // language:'zn',
  1068. // data: kind
  1069. // });
  1070. layui.form.on("select(indusKind)", function (data) {
  1071. self.subInfo.indusKind = data.value;
  1072. });
  1073. layui.form.on("select(propKind)", function (data) {
  1074. self.subInfo.propKind = data.value;
  1075. });
  1076. layui.form.on("select(testAmt)", function (data) {
  1077. self.testAmt = data.value;
  1078. self.testAmtName = this.innerText;
  1079. });
  1080. // layui.form.on("submit(saveTemp)", function (obj) {
  1081. // self.saveTemp();
  1082. // });
  1083. layui.form.on("submit(save)", function (obj) {
  1084. self.save();
  1085. });
  1086. layui.table.on("edit(amtSource)", function (obj) {
  1087. var oldText = $(this).prev().text();
  1088. if (obj.value != "" && !isNumber(obj.value)) {
  1089. App.msg.warn("请填写数字");
  1090. $(this).val(oldText);
  1091. obj.value = oldText;
  1092. obj.data[obj.field] = oldText;
  1093. obj.update(obj.data);
  1094. self.amtSource = layui.table.getData("amtSource");
  1095. } else {
  1096. self.amtSource = layui.table.getData("amtSource");
  1097. }
  1098. });
  1099. this.getForm();
  1100. },
  1101. initAmtSource: function () {
  1102. var self = this;
  1103. layui.table.render({
  1104. elem: "#amtSource", // 指定原始表格元素选择器(推荐id选择器)
  1105. even: true,
  1106. cols: [
  1107. [
  1108. // 设置表头
  1109. {type: "numbers", title: "序号"},
  1110. {field: "sourceName", title: "资金来源"},
  1111. {field: "amt", title: "资金(万元)", edit: "text"},
  1112. {field: "amtSj", title: "到位资金(万元)", edit: "text"},
  1113. {title: "操作", align: "center", toolbar: "#amtToolBar"},
  1114. ],
  1115. ],
  1116. limit: self.amtSource.length,
  1117. data: self.amtSource,
  1118. });
  1119. layui.table.on("tool(amtSource)", function (obj) {
  1120. self[obj.event].call(this, obj);
  1121. });
  1122. },
  1123. showPdf: function (){
  1124. App.openLayer({
  1125. title: "管理流程图",
  1126. content: App.getUrl("/subPreNew/showPrePdf"),
  1127. height: "600",
  1128. width: "800"
  1129. });
  1130. //window.location.href=App.getUrl("/subPreNew/showPrePdf");
  1131. },
  1132. loadTableAmtPlan: function () {
  1133. var self = this;
  1134. var amt= {field: 'amt', align: 'center', title: '年初计划投资(万元)<br><span style="font-size: 12px;">项目单位填写</span>', minWidth: 150, edit: 'text'}
  1135. var assignAmt= {field: 'assignAmt', align: 'center', title: '月度任务(万元)<br><span style="font-size: 12px;">行业部门填写</span>', minWidth: 150}
  1136. if(this.roleCode!=='001'){
  1137. delete amt.edit
  1138. }
  1139. /* if(this.roleCode==='001'){
  1140. delete assignAmt.edit
  1141. }*/
  1142. layui.table.render({
  1143. elem: '#amtPlan', // 指定原始表格元素选择器(推荐id选择器)
  1144. even: true,
  1145. cols: [[ // 设置表头
  1146. {field: 'ymonth', align: 'center', title: '年月', minWidth: 100},
  1147. amt,
  1148. assignAmt,
  1149. {field: 'remark', align: 'center', title: '备注', minWidth: 150, edit: 'text'},
  1150. // { title: '操作', align: 'center', width: 100, toolbar: '#toolBar' }
  1151. ]],
  1152. limit: self.list.length,
  1153. data: self.list
  1154. });
  1155. layui.table.on("tool(amtPlan)", function (obj) {
  1156. self[obj.event].call(this, obj);
  1157. });
  1158. layui.table.on("edit(amtPlan)", function (obj) {
  1159. if (obj.field == 'amt' || obj.field == 'assignAmt') {
  1160. var oldText = $(this).prev().text();
  1161. if (obj.value != '' && !isNumber(obj.value)) {
  1162. App.msg.warn("请填写数字");
  1163. $(this).val(oldText);
  1164. obj.value = oldText;
  1165. obj.data[obj.field] = oldText;
  1166. obj.update(obj.data);
  1167. self.list = layui.table.getData("amtPlan");
  1168. } else {
  1169. self.list = layui.table.getData("amtPlan");
  1170. }
  1171. }else {
  1172. self.list = layui.table.getData("amtPlan");
  1173. }
  1174. });
  1175. },
  1176. delAllAmt: function () {
  1177. for (var i = 0; i < this.amtSource.length; i++) {
  1178. if (this.amtSource[i].id) {
  1179. this.amtSource[i].logicDeleteFlag = 1;
  1180. this.delAmtSource.push(this.amtSource[i]);
  1181. }
  1182. }
  1183. this.amtSource = [];
  1184. },
  1185. delAmt: function (obj) {
  1186. if (obj.data.id) {
  1187. obj.data.logicDeleteFlag = 1;
  1188. this.delAmtSource.push(obj.data);
  1189. obj.del();
  1190. } else {
  1191. obj.del();
  1192. }
  1193. this.amtSource = layui.table.getData("amtSource");
  1194. this.initAmtSource();
  1195. },
  1196. chooseTzxz: function (kindNature) {
  1197. var self = this;
  1198. if (kindNature == "2") {
  1199. $("#addAmt").hide();
  1200. //设置企业投资
  1201. if (
  1202. self.amtSource.length == 1 &&
  1203. self.amtSource[0].sourceName == "社会资金"
  1204. ) {
  1205. return;
  1206. }
  1207. self.delAllAmt();
  1208. var qyzj = $("#testAmt")
  1209. .find("option")
  1210. .filter((index, item) => {
  1211. return item.innerText == "社会资金";
  1212. })
  1213. .eq(0);
  1214. self.amtSource.push({
  1215. sourceId: qyzj.val(),
  1216. sourceName: qyzj.text().trim(),
  1217. });
  1218. this.initAmtSource();
  1219. } else {
  1220. $("#addAmt").show();
  1221. //非企业投资
  1222. if (
  1223. self.amtSource.length == 1 &&
  1224. self.amtSource[0].sourceName == "社会资金"
  1225. ) {
  1226. self.delAllAmt();
  1227. this.initAmtSource();
  1228. return;
  1229. }
  1230. }
  1231. },
  1232. save: function () {
  1233. var list = this.list;
  1234. var self = this;
  1235. var subId = $("#subId").val();
  1236. var amtYear = $("#amtYear").val();
  1237. console.log(list)
  1238. var sum=0;
  1239. if (amtYear!=0&&amtYear!=undefined){
  1240. //计算年度计划总金额
  1241. for (var i=0;i<list.length;i++){
  1242. if (list[i].amt!=undefined&&list[i].amt!=""){
  1243. sum=sum+parseInt(list[i].amt);
  1244. }
  1245. }
  1246. /* if (amtYear<sum){
  1247. App.msg.warn("年度计划月累计金额:"+sum+" 不能大于年度计划金额:"+amtYear+"(市发改委)");
  1248. return ;
  1249. }*/
  1250. }
  1251. /* if (amtYear!=0&&amtYear!=undefined){
  1252. //计算年度计划总金额
  1253. var sumAssign=0;
  1254. for (var i=0;i<list.length;i++){
  1255. if (list[i].assignAmt!=undefined&&list[i].assignAmt!=""){
  1256. sumAssign=sumAssign+parseInt(list[i].assignAmt);
  1257. }
  1258. }
  1259. if (sum<sumAssign){
  1260. App.msg.warn("年度累计分配金额:"+sumAssign+" 不能大于年度计划月累计金额:"+sum+"(市发改委)");
  1261. return ;
  1262. }
  1263. }*/
  1264. App.msg.confirm("确认提交吗?", function () {
  1265. App.postJson("/api/amtPlan/save", {subId: subId, amtPlans: list}, function (res) {
  1266. if (res.success) {
  1267. layer.msg("成功", {icon: 6, time: 1000});
  1268. self.getForm();
  1269. }
  1270. });
  1271. });
  1272. },
  1273. getForm: function () {
  1274. var subId = $("#subId").val();
  1275. var self = this;
  1276. if (subId == "") {
  1277. //this.loadPlanTable();
  1278. // self.initAmtSource();
  1279. } else {
  1280. App.postJson(
  1281. "/api/subject/subInfo/getById",
  1282. {id: subId, needSpName: true},
  1283. function (res) {
  1284. if (res.success) {
  1285. self.subInfo = res.data;
  1286. self.getYearArray(self.subInfo.beginDate,self.subInfo.endDate)
  1287. }
  1288. }
  1289. );
  1290. App.postJson(
  1291. "/api/subPreNew/countPreNumByStatus",
  1292. {subId: subId},
  1293. function (res) {
  1294. if (res.success) {
  1295. self.preInfo = res.data;
  1296. }
  1297. }
  1298. );
  1299. var planYear = $("#year").val();
  1300. if (planYear == null || planYear == undefined) {
  1301. self.planYear = new Date().getFullYear();
  1302. } else {
  1303. self.planYear = planYear;
  1304. }
  1305. App.postJson("/api/amtPlan/getBySubId", {subId: subId, year: self.planYear}, function (res) {
  1306. if (res.success) {
  1307. self.list = res.data.list || [];
  1308. self.list.forEach(item=>{
  1309. if(item.amt){
  1310. self.ndjhtx=true;
  1311. return
  1312. }
  1313. })
  1314. self.loadTableAmtPlan();
  1315. setTimeout(function () {
  1316. layui.form.render();
  1317. }, 200);
  1318. }
  1319. });
  1320. App.postJson(
  1321. "/api/amtPlan/countAmtPlan",
  1322. {subId: subId, year: planYear},
  1323. function (res) {
  1324. if (res.success) {
  1325. self.$set(self.plan, 'planAmtYear', res.data);
  1326. // self.plan.planAmtYear = res.data;
  1327. }
  1328. }
  1329. );
  1330. App.postJson(
  1331. "/api/subject/subStart/getStartInfoBySubId",
  1332. {subId: subId},
  1333. function (res) {
  1334. if (res.success) {
  1335. self.open = res.data;
  1336. }
  1337. }
  1338. );
  1339. App.postJson(
  1340. "/api/subComplete/getInfoBySubId",
  1341. {subId: subId},
  1342. function (res) {
  1343. if (res.success) {
  1344. self.comp = res.data;
  1345. }
  1346. }
  1347. );
  1348. self.selectYearPlan(self.planYear);
  1349. App.postJson(
  1350. "/api/weekReport/getByInfo4Week",
  1351. {subId: subId},
  1352. function (res) {
  1353. if (res.success) {
  1354. self.weekAndMonth = res.data;
  1355. self.week = res.data.weekList;
  1356. self.month = res.data.monthList;
  1357. // for (var i=0;i<=3;i++){
  1358. // var weekEdit="weekEdit"+i;
  1359. // var weekAdd="weekAdd"+i;
  1360. //
  1361. // // if (self.week[i].status=="已完成"){
  1362. // // document.getElementById(weekEdit).setAttribute("style","");
  1363. // // }else if (self.week[i].status=="未完成"){
  1364. // // document.getElementById(weekAdd).setAttribute("style","");
  1365. // // }
  1366. //
  1367. // }
  1368. }
  1369. }
  1370. );
  1371. }
  1372. },
  1373. subInfoDetail: function () {
  1374. var subId = $("#subId").val();
  1375. window.location.href = App.getUrl(
  1376. "/subject/subInfo/detailView?subId=" + subId + "&lastUrl=" + window.location.href
  1377. );
  1378. },
  1379. toPre: function () {
  1380. var subId = $("#subId").val();
  1381. window.location.href=App.getUrl("/subPreNew/sbTodo?subId="+subId);
  1382. //window.location.href = App.getUrl("/subPreNew/todo?subId=" + subId);
  1383. },
  1384. toPlanAmt: function () {
  1385. var subId = $("#subId").val();
  1386. var planYear = $("#year").val();
  1387. window.location.href = App.getUrl(
  1388. "/amtPlan/edit?subId=" + subId + "&year=" + planYear
  1389. );
  1390. },
  1391. toStop: function () {
  1392. var self = this;
  1393. var subId = $("#subId").val();
  1394. // var msgConfirm = (self.subInfo.status == '7' ? '确认变更为停工状态?' : '确认变更为开工状态?');
  1395. // App.msg.confirm(msgConfirm, function () {
  1396. layer.open({
  1397. type: 1,
  1398. title: self.subInfo.status == '7' ? '停工日期' : '开工日期',
  1399. content: $("#openAndEndDate"),
  1400. // area: ['500px', '300px'],
  1401. btn: ["保存", "取消"],
  1402. yes: function (index) {
  1403. var reason = layui.form.val("openForm");
  1404. if (reason.openDate==null||reason.openDate==""){
  1405. App.msg.warn("日期不能为空");
  1406. return;
  1407. }
  1408. App.postJson("/api/subject/subInfo/changeTg", {subId: subId,openDate:reason.openDate}, function (res) {
  1409. if (res.success) {
  1410. App.msg.success("变更成功");
  1411. layer.close(index);
  1412. window.location.href = App.getUrl(
  1413. "/subject/subInfo/detail?subId=" + subId
  1414. );
  1415. }
  1416. })
  1417. },
  1418. close: function (index) {
  1419. layer.close(index);
  1420. }
  1421. })
  1422. // })
  1423. },
  1424. // toStop: function () {
  1425. // var self = this;
  1426. // var subId = $("#subId").val();
  1427. // var msgConfirm =
  1428. // self.subInfo.status == "7"
  1429. // ? "确认变更为停工状态?"
  1430. // : "确认变更为开工状态?";
  1431. // App.msg.confirm(msgConfirm, function () {
  1432. // App.postJson(
  1433. // "/api/subject/subInfo/changeTg",
  1434. // {subId: subId},
  1435. // function (res) {
  1436. // if (res.success) {
  1437. // App.msg.success("变更成功");
  1438. // window.location.href = App.getUrl(
  1439. // "/subject/subInfo/detail?subId=" + subId
  1440. // );
  1441. // }
  1442. // }
  1443. // );
  1444. // });
  1445. // },
  1446. // toStop: function () {
  1447. // var self = this;
  1448. // var subId = $("#subId").val();
  1449. //
  1450. // var msgConfirm = (self.subInfo.status == '7' ? '确认变更为停工状态?' : '确认变更为开工状态?');
  1451. // App.msg.confirm(msgConfirm, function () {
  1452. //
  1453. // layer.open({
  1454. // type: 1,
  1455. // title: self.subInfo.status == '7' ? '停工日期' : '开工日期',
  1456. // content: $("#openAndEndDate"),
  1457. // area: ['500px', '300px'],
  1458. // btn: ["保存", "取消"],
  1459. // yes: function (index) {
  1460. // var reason = layui.form.val("openForm");
  1461. //
  1462. // if (reason.openDate==null||reason.openDate==""){
  1463. // App.msg.warn("日期不能为空");
  1464. // return;
  1465. // }
  1466. //
  1467. // App.postJson("/api/subject/subInfo/changeTg", {subId: subId,openDate:reason.openDate}, function (res) {
  1468. // if (res.success) {
  1469. // App.msg.success("变更成功");
  1470. // layer.close(index);
  1471. // self.getData();
  1472. // }
  1473. // })
  1474. // },
  1475. // close: function (index) {
  1476. // layer.close(index);
  1477. // }
  1478. // })
  1479. //
  1480. //
  1481. //
  1482. // })
  1483. //
  1484. //
  1485. //
  1486. //
  1487. //
  1488. //
  1489. // },
  1490. toOpenComp: function () {
  1491. // var self = this;
  1492. // var subId = $("#subId").val();
  1493. // var msgConfirm =
  1494. // self.subInfo.status == "7"
  1495. // ? "确认变更为停工状态?"
  1496. // : "确认变更为开工状态?";
  1497. // App.msg.confirm(msgConfirm, function () {
  1498. // App.postJson(
  1499. // "/api/subject/subInfo/changeTg",
  1500. // {subId: subId},
  1501. // function (res) {
  1502. // if (res.success) {
  1503. // App.msg.success("变更成功");
  1504. // window.location.href = App.getUrl(
  1505. // "/subject/subInfo/detail?subId=" + subId
  1506. // );
  1507. // }
  1508. // }
  1509. // );
  1510. // });
  1511. var self = this;
  1512. var subId = $("#subId").val();
  1513. // var msgConfirm = (self.subInfo.status == '7' ? '确认变更为停工状态?' : '确认变更为开工状态?');
  1514. // App.msg.confirm(msgConfirm, function () {
  1515. layer.open({
  1516. type: 1,
  1517. title: self.subInfo.status == '7' ? '停工日期' : '开工日期',
  1518. content: $("#openAndEndDate"),
  1519. // area: ['500px', '300px'],
  1520. btn: ["保存", "取消"],
  1521. yes: function (index) {
  1522. var reason = layui.form.val("openForm");
  1523. if (reason.openDate==null||reason.openDate==""){
  1524. App.msg.warn("日期不能为空");
  1525. return;
  1526. }
  1527. App.postJson("/api/subject/subInfo/changeTg", {subId: subId,openDate:reason.openDate}, function (res) {
  1528. if (res.success) {
  1529. App.msg.success("变更成功");
  1530. layer.close(index);
  1531. window.location.href = App.getUrl(
  1532. "/subject/subInfo/detail?subId=" + subId
  1533. );
  1534. }
  1535. })
  1536. },
  1537. close: function (index) {
  1538. layer.close(index);
  1539. }
  1540. })
  1541. // })
  1542. },
  1543. toComp: function () {
  1544. var subId = $("#subId").val();
  1545. App.msg.confirm("确认提交竣工验收申请", function (ind) {
  1546. App.postJson(
  1547. "/api/subComplete/canReport",
  1548. {subId: subId},
  1549. function (res) {
  1550. layer.close(ind);
  1551. if (res.success) {
  1552. window.location.href = App.getUrl(
  1553. "subComplete/report?subId=" + subId
  1554. );
  1555. // window.location.href = App.getUrl("/subject/subInfo/detail?subId=" + subId);
  1556. }
  1557. }
  1558. );
  1559. });
  1560. },
  1561. toOpen: function () {
  1562. var self = this;
  1563. var subId = $("#subId").val();
  1564. var subName =
  1565. "项目名称:" +
  1566. self.subInfo.subName +
  1567. "<br>是否确认进行项目开工申报?";
  1568. layer.confirm(
  1569. subName,
  1570. {title: "项目开工申报", btn: ["确认", "取消"]},
  1571. function (ind) {
  1572. App.postJson(
  1573. "/api/subject/subInfo/subStartDeclaration",
  1574. {subId: subId},
  1575. function (res) {
  1576. layer.close(ind);
  1577. if (res.success) {
  1578. window.location.href = App.getUrl(
  1579. "/subject/subInfo/detail?subId=" + subId
  1580. );
  1581. }
  1582. }
  1583. );
  1584. }
  1585. );
  1586. },
  1587. weekReport: function (beginDate) {
  1588. if (!(this.subInfo.status === '7' || this.subInfo.status === '8')) return;
  1589. var subId = $("#subId").val();
  1590. // beginDate = new Date(beginDate); // 创建Date对象
  1591. // var year=beginDate.getFullYear();
  1592. window.location.href = App.getUrl(
  1593. "weekReport/getBySubId?subId=" + subId + "&beginDate=" + beginDate
  1594. );
  1595. },
  1596. monthReport: function (beginDate) {
  1597. if (!(this.subInfo.status === '7' || this.subInfo.status === '8')) return;
  1598. var subId = $("#subId").val();
  1599. // 创建Date对象
  1600. // var year=beginDate.getFullYear();
  1601. window.location.href = App.getUrl(
  1602. "monthReport/getBySubId?subId=" +
  1603. subId +
  1604. "&beginDate=" +
  1605. beginDate
  1606. );
  1607. },
  1608. selectYearPlan: function (year) {
  1609. var subId = $("#subId").val();
  1610. var self = this;
  1611. App.postJson(
  1612. "/api/amtPlan/countAmtPlan",
  1613. {subId: subId, year: year},
  1614. function (res) {
  1615. self.$set(self.plan, 'planAmtYear', res.data);
  1616. if (res.success) {
  1617. self.plan.planAmtYear = res.data;
  1618. layui.form.render();
  1619. }
  1620. }
  1621. );
  1622. },
  1623. delPlan: function (obj) {
  1624. var self = this;
  1625. App.msg.confirm("确认删除该内容吗?", function () {
  1626. obj.data.amt = '';
  1627. obj.data.remark = '';
  1628. obj.update(obj.data);
  1629. self.list = layui.table.getData("amtPlan");
  1630. })
  1631. },
  1632. selectPlanYear: function (year) {
  1633. var subId = $("#subId").val();
  1634. var self = this;
  1635. App.postJson("/api/amtPlan/getBySubId", {subId: subId, year: year}, function (res) {
  1636. if (res.success) {
  1637. self.list = res.data.list || [];
  1638. self.loadTableAmtPlan();
  1639. // setTimeout(function () {
  1640. // layui.form.render();
  1641. // }, 200);
  1642. }
  1643. });
  1644. },
  1645. addAmt: function () {
  1646. var self = this;
  1647. $("#zjAmt").val("");
  1648. $("#zjAmtSj").val("");
  1649. this.planEditPanl = layer.open({
  1650. title: "资金选择",
  1651. type: 1,
  1652. content: $("#preplanEdit"),
  1653. area: ["800px", "600px"],
  1654. });
  1655. },
  1656. closePane: function () {
  1657. layer.close(this.planEditPanl);
  1658. },
  1659. onChangeActive: function (ind) {
  1660. this.tabActive = ind;
  1661. $(".layui-colla-content").removeClass("layui-show");
  1662. $($(".layui-colla-content")[ind - 1]).addClass("layui-show");
  1663. },
  1664. isBlank: function (value) {
  1665. return value == null || value == "";
  1666. },
  1667. saveTemp: function () {
  1668. this.doRequest(true);
  1669. },
  1670. doRequest: function (tem) {
  1671. var self = this;
  1672. var beginDate = new Date(self.subInfo.beginDate);
  1673. var endDate = new Date(self.subInfo.endDate);
  1674. if (beginDate > endDate) {
  1675. layer.msg("开始时间必须小于结束时间");
  1676. return;
  1677. }
  1678. var saveUrl = "/api/subject/subInfo/saveSubInfo";
  1679. //项目资金来源
  1680. if (this.amtSource.length == 0) {
  1681. App.msg.warn("项目资金来源至少选择一项");
  1682. return;
  1683. }
  1684. for (var i = 0; i < this.amtSource.length; i++) {
  1685. if (
  1686. this.amtSource[i].amt == null ||
  1687. this.amtSource[i].amt == undefined
  1688. ) {
  1689. App.msg.warn(this.amtSource[i].sourceName + "资金不能为空");
  1690. return;
  1691. }
  1692. if (
  1693. this.amtSource[i].amtSj == null ||
  1694. this.amtSource[i].amtSj == undefined
  1695. ) {
  1696. App.msg.warn(this.amtSource[i].sourceName + "到位资金不能为空");
  1697. return;
  1698. }
  1699. }
  1700. var saveAmtSource = this.amtSource.concat(this.delAmtSource);
  1701. this.subInfo.subSource = saveAmtSource;
  1702. this.subInfo.kind = this.kindSelect
  1703. .getValue("value")
  1704. .sort()
  1705. .join(",");
  1706. if (this.subInfo.kind == "") {
  1707. App.msg.warn("项目类型不能为空");
  1708. return;
  1709. }
  1710. if (this.subInfo.is3Kg == "") {
  1711. App.msg.warn("3月是否可开工不能为空");
  1712. return;
  1713. }
  1714. if (
  1715. this.subInfo.employNumbers == "" ||
  1716. this.subInfo.employNumbers == null
  1717. ) {
  1718. App.msg.warn("带动就业人数不能为空");
  1719. return;
  1720. }
  1721. if (tem) {
  1722. if (
  1723. (this.subInfo.status != null && this.subInfo.status != "0") ||
  1724. (this.subInfo.status == "1" && this.subInfo.status != "1")
  1725. ) {
  1726. App.msg.warn("非暂存状态,不可暂存");
  1727. return;
  1728. }
  1729. saveUrl = "/api/subject/subInfo/saveTemp";
  1730. }
  1731. /* App.postJson("/subject/subInfo/checkAdd",{subjectId : self.subInfo.subjectId,ztdwName: self.currSelectMainName, hyflName: self.currSelectHyflName }, function(res){
  1732. if(res.success){
  1733. self.subInfo.mainId=res.data; */
  1734. if (
  1735. self.subInfo.mainId == undefined ||
  1736. self.subInfo.mainId == null
  1737. ) {
  1738. App.msg.warn("您选择的建设地点还未分配监管单位");
  1739. return;
  1740. }
  1741. App.postJson(saveUrl, self.subInfo, function (res) {
  1742. if (res.success) {
  1743. self.closeMark = true;
  1744. layer.msg("成功", {icon: 6, time: 1000});
  1745. layer.confirm(
  1746. "是否确认要进行下一步操作?",
  1747. {title: "下一步", btn: ["确认", "取消"]},
  1748. function () {
  1749. window.location.href = App.getUrl(
  1750. "/amtPlan/editAdd?subId=" +
  1751. res.data.id +
  1752. "&year=" +
  1753. new Date().getFullYear()
  1754. );
  1755. },
  1756. function () {
  1757. window.history.back(-1);
  1758. }
  1759. );
  1760. // window.history.back(-1);
  1761. //window.location.href=App.getUrl("/subject/subInfo/report");
  1762. }
  1763. });
  1764. /* }else {
  1765. App.msg.warn("选择的行业类型和建设地点没有对应的监管单位");
  1766. }
  1767. }); */
  1768. },
  1769. // save: function () {
  1770. // this.doRequest(false);
  1771. // },
  1772. closeWin: function () {
  1773. var self = this;
  1774. if (
  1775. !this.closeMark &&
  1776. (this.subInfo.subName != "" ||
  1777. this.subInfo.kind != "" ||
  1778. this.subInfo.indusKind != "" ||
  1779. this.subInfo.propKind != "")
  1780. ) {
  1781. App.msg.confirm(
  1782. "当前信息未保存或未保存成功,确认关闭?",
  1783. function () {
  1784. window.history.back(-1);
  1785. }
  1786. );
  1787. } else {
  1788. window.history.back(-1);
  1789. }
  1790. },
  1791. getYearArray: function (startTime, endTime) {
  1792. var self=this;
  1793. var now = new Date();
  1794. self.planYear = now.getFullYear();
  1795. const startYear = new Date(startTime).getFullYear();
  1796. const endYear = new Date(endTime).getFullYear();
  1797. if (endYear > self.planYear) {
  1798. self.yearsArray = Array.from({ length: self.planYear - startYear + 2 }, (_, i) => startYear + i);
  1799. } else if (endYear <= self.planYear) {
  1800. self.planYear=endYear;
  1801. self.yearsArray = Array.from({ length: endYear - startYear + 2 }, (_, i) => startYear + i);
  1802. } else {
  1803. self.planYear=startYear;
  1804. self.yearsArray = [startYear];
  1805. }
  1806. self.yearsArray.reverse();
  1807. if(self.yearsArray.length>5){
  1808. self.yearsArray=self.yearsArray.slice(0, 5);
  1809. }
  1810. console.log(self.yearsArray,self.planYear);
  1811. self.selectPlanYear(self.planYear);
  1812. self.selectYearPlan(self.planYear);
  1813. },
  1814. clickYear:function (year) {
  1815. var self=this;
  1816. self.planYear=year;
  1817. self.selectPlanYear(year);
  1818. self.selectYearPlan(year);
  1819. }
  1820. },
  1821. })
  1822. ;
  1823. </script>
  1824. </body>
  1825. </html>