projInfo_yb_read.jsp 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8" %>
  3. <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
  4. <%@ page isELIgnored="false" %>
  5. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  6. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  7. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  8. <!DOCTYPE html>
  9. <html>
  10. <head>
  11. <meta charset="utf-8"/>
  12. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
  13. <meta name="viewport"
  14. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
  15. <title>项目信息</title>
  16. <style>
  17. .right_title {
  18. margin-bottom: 20px;
  19. }
  20. .layui-table-cell {
  21. height: 42px !important;
  22. /*line-height: 42px !important;*/
  23. }
  24. .report-big {
  25. display: flex;
  26. justify-content: space-between;
  27. margin-top: 51px;
  28. }
  29. .report-title {
  30. height: 14px;
  31. margin-bottom: 19px;
  32. font-weight: 500;
  33. font-size: 14px;
  34. color: #999999;
  35. line-height: 28px;
  36. }
  37. .report-box {
  38. display: flex;
  39. flex-wrap: wrap;
  40. width: 390px;
  41. cursor: pointer;
  42. }
  43. .report-box-month {
  44. width: 270px;
  45. }
  46. .report-item {
  47. margin: 0 -1px -1px 0;
  48. padding: 8px;
  49. box-sizing: border-box;
  50. background: #F5F5F5;
  51. border: 1px solid #CCCCCC;
  52. }
  53. .report-item-title {
  54. display: flex;
  55. align-items: center;
  56. justify-content: center;
  57. width: 100%;
  58. font-weight: 500;
  59. font-size: 14px;
  60. /*line-height: 29px;*/
  61. color: #333333;
  62. }
  63. .report-item-status {
  64. /*width: 80px;*/
  65. /*height: 30px;*/
  66. padding: 0px 5px;
  67. margin-left: 10px;
  68. font-weight: 300;
  69. font-size: 12px;
  70. color: #FFFFFF;
  71. /*text-align: center;*/
  72. line-height: 1.3;
  73. background: #FFAA01;
  74. border-right: 3px;
  75. }
  76. .report-status-done {
  77. background: #00BB55;
  78. }
  79. .report-item-time {
  80. width: 100%;
  81. /*margin-top: 20px;*/
  82. font-weight: 300;
  83. font-size: 14px;
  84. color: #999999;
  85. text-align: center;
  86. /*height: 24px;*/
  87. /*line-height: 29px;*/
  88. }
  89. .report-done {
  90. background: rgba(44, 110, 198, 0.1);
  91. border: 1px solid #1C56A3;
  92. margin: 0 -1px -1px 0;
  93. z-index: 1;
  94. }
  95. .report-done .report-item-title,
  96. .report-done .report-item-time {
  97. color: #1C56A3;
  98. }
  99. .year-big {
  100. width: 100%;
  101. height: 480px;
  102. /* background: rgba(28, 86, 163, 0.1);*/
  103. }
  104. .year-title {
  105. display: flex;
  106. justify-content: space-between;
  107. align-items: center;
  108. margin: 13px 19px 0 24px;
  109. box-sizing: border-box;
  110. }
  111. .layui-colla-content {
  112. background: rgba(28, 86, 163, 0.1);
  113. }
  114. .year-title-text {
  115. font-weight: 500;
  116. font-size: 16px;
  117. color: #1C56A3;
  118. }
  119. .year-choose-box {
  120. display: flex;
  121. align-items: center;
  122. justify-content: space-between;
  123. padding: 16px 100px;
  124. background: rgba(28, 86, 163, 0.1);
  125. }
  126. .jihuazj {
  127. display: flex;
  128. align-items: center;
  129. margin-left: 20px;
  130. }
  131. .year-choose {
  132. padding-top: 15px;
  133. padding-left: 7px;
  134. background: rgba(28, 86, 163, 0.1);
  135. width: auto;
  136. height: 40px;
  137. border-radius: 3px 3px 0px 0px;
  138. border-bottom: 1px solid #C9D8E9;
  139. cursor: pointer;
  140. }
  141. .year-choose input {
  142. height: 100%;
  143. font-size: 14px;
  144. padding-left: 20px;
  145. cursor: pointer;
  146. }
  147. .year-choose-intro {
  148. width: auto;
  149. font-size: 14px;
  150. color: #333333;
  151. line-height: 24px;
  152. text-align: left;
  153. }
  154. .year-choose-value {
  155. margin-left: 24px;
  156. font-weight: 500;
  157. font-size: 16px;
  158. color: #1C56A3;
  159. }
  160. .year-choose-unit {
  161. font-size: 14px;
  162. }
  163. .button-active {
  164. height: 102% !important;
  165. font-weight: bold !important;
  166. color: #2B6EC6 !important;
  167. background: #E7EEF6 !important;
  168. padding-bottom: 1px !important;
  169. border-bottom: 0 !important;
  170. }
  171. .button-item {
  172. margin-bottom: -1px;
  173. padding: 0 10px;
  174. width: auto;
  175. margin-left: -1px;
  176. height: 100%;
  177. background: #F5F5F5;
  178. border-radius: 0px 0px 0px 0px;
  179. border: 1px solid #C9D8E9;
  180. border-bottom: none;
  181. font-weight: 300;
  182. font-size: 14px;
  183. color: #999999;
  184. cursor: pointer;
  185. }
  186. .process-content,
  187. .progress-big {
  188. width: 71%;
  189. display: inline-block;
  190. }
  191. .process-content-right,
  192. .progress-big {
  193. width: 28%;
  194. display: inline-block;
  195. overflow-y: scroll;
  196. height: 400px;
  197. }
  198. .layui-table-header .layui-table th {
  199. /*height: 60px;*/
  200. background: rgba(28, 86, 163, 0.2);
  201. font-size: 14px;
  202. color: #1C56A3;
  203. /*font-weight: bold;*/
  204. }
  205. .layui-table tr {
  206. /*height: 51px;*/
  207. border-bottom: 1px solid rgba(28, 86, 163, 0.15);
  208. }
  209. .layui-table-view .layui-table td {
  210. font-size: 14px;
  211. color: #333333;
  212. background-color: #E7EEF6;
  213. }
  214. </style>
  215. </head>
  216. <jsp:include page="../common/common-meta-include.jsp"></jsp:include>
  217. <jsp:include page="../common/common-js-include.jsp"></jsp:include>
  218. <jsp:include page="../common/common-css-include.jsp"></jsp:include>
  219. <body>
  220. <div id="app"></div>
  221. <template id="template">
  222. <div class="layui-layout layui-layout-admin"
  223. style="padding: 0 20px;flex-direction: row;justify-content: space-between">
  224. <input type="hidden" id="subId" value="${subId }"/>
  225. <!-- 内容区域 -->
  226. <div class="process-content">
  227. <div class="year-big">
  228. <form class="layui-form" lay-filter="formData2" action=""
  229. onkeydown="if(event.keyCode==13){return false;}">
  230. <div class="year-choose">
  231. <button type="button" class="button-item" :class="item==planYear?'button-active':''"
  232. v-for="(item,index) in yearsArray" :key="index" @click="clickYear(item)">{{item}}年度
  233. </button>
  234. </div>
  235. <div class="year-choose-box">
  236. <%-- <div class="jihuazj">
  237. <div class="year-choose-intro">年初计划累计</div>
  238. <div class="year-choose-value">
  239. {{planAmt}}
  240. <span class="year-choose-unit">(万元)</span>
  241. </div>
  242. </div>
  243. <div class="jihuazj">
  244. <div class="year-choose-intro">月度计划累计</div>
  245. <div class="year-choose-value">
  246. {{amtYear}}
  247. <span class="year-choose-unit">(万元)</span>
  248. </div>
  249. </div>
  250. <div class="jihuazj">
  251. <div class="year-choose-intro">月实际累计</div>
  252. <div class="year-choose-value">
  253. {{amtRt}}
  254. <span class="year-choose-unit">(万元)</span>
  255. </div>
  256. </div>--%>
  257. </div>
  258. <div class="layui-colla-content layui-show" style="height: auto;padding: 0">
  259. <div class="table_progress" style="padding-top: 0;">
  260. <table id="table1" lay-filter="test"></table>
  261. </div>
  262. </div>
  263. </form>
  264. </div>
  265. </div>
  266. <div class="process-content-right">
  267. <div class="year-choose">
  268. <button type="button" class="button-item" :class="item.id==reportItem?'button-active':''"
  269. v-for="(item,index) in reportArray" :key="index" @click="clickReport(item)">{{item.label}}
  270. </button>
  271. </div>
  272. <div class="table-box" id="divWeek" style="margin-top: 20px">
  273. <div id="popInfo">
  274. <div class="pop_con_form" style="width:100%;padding:0 40px;box-sizing:border-box;">
  275. <form class="layui-form">
  276. <div class="layui-form-item">
  277. <label class="layui-form-label" style="width:95px;">请选择周</label>
  278. <div class="layui-input-block">
  279. <select name="week" id="week" lay-filter="week">
  280. <option value="">--请选择--</option>
  281. </select>
  282. </div>
  283. </div>
  284. <div class="layui-form-item">
  285. <label class="layui-form-label" style="width:95px;">项目进展情况</label>
  286. <div class="layui-input-block">
  287. {{weekInfo.content}}
  288. </div>
  289. </div>
  290. <div class="layui-form-item">
  291. <div class="table_box">
  292. <div class="layui-form-label required" style="width:95px;">附件信息</div>
  293. <ul class="img_ls">
  294. <li v-for="(item, index) in images" :key="index">
  295. <div class="img" :title="showTitle(item)">
  296. <%-- //:layer-src="picShow1(item.fileAddre)"--%>
  297. <img :id="item.fileAddre" :src="picShow(item.fileAddre,item.fileType)"
  298. @click="showImage(item.fileAddre,item.fileType, item.createTime)"
  299. :alt="item.fileName"/>
  300. <div class="download_icon"
  301. @click="download(item.fileAddre,item.fileName)"></div>
  302. </div>
  303. {{item.fileName}}
  304. </li>
  305. <%-- <li class="add" id="addPic">
  306. <div class="bg"><i class="layui-icon layui-icon-add-circle"></i></div>
  307. </li>--%>
  308. </ul>
  309. </div>
  310. </div>
  311. </form>
  312. </div>
  313. </div>
  314. </div>
  315. <div class="table-box" id="divMonth" style="margin-top: 20px;display: none">
  316. <div>
  317. <div class="pop_con_form" style="width:100%;padding:0 40px;box-sizing:border-box;">
  318. <form class="layui-form">
  319. <div class="layui-form-item">
  320. <label class="layui-form-label" style="width:95px;">请选择月</label>
  321. <div class="layui-input-block">
  322. <%-- <input class="layui-input" readonly="readonly" id="year">--%>
  323. <select name="month" id="month" lay-filter="month">
  324. <option value="">--请选择--</option>
  325. <%-- <template v-for="(item, index) in weekData">
  326. <option value="item.kjMonth">{{item.kjMonth}}</option>
  327. </template>--%>
  328. </select>
  329. </div>
  330. </div>
  331. <div class="layui-form-item">
  332. <label class="layui-form-label" style="width:95px;">项目进展情况</label>
  333. <div class="layui-input-block">
  334. {{monthInfo.content}}
  335. </div>
  336. </div>
  337. <div class="layui-form-item">
  338. <div class="table_box">
  339. <div class="layui-form-label required" style="width:95px;">附件信息</div>
  340. <ul class="img_ls">
  341. <li v-for="(item, index) in monthImages" :key="index">
  342. <div class="img" id="attachDiv" :title="showTitle(item)">
  343. <%-- //:layer-src="picShow1(item.fileAddre)"--%>
  344. <img :id="item.fileAddre" :src="picShow(item.fileAddre,item.fileType)"
  345. @click="showImage(item.fileAddre,item.fileType, item.createTime)"
  346. :alt="item.fileName"/>
  347. <div class="download_icon"
  348. @click="download(item.fileAddre,item.fileName)"></div>
  349. </div>
  350. {{item.fileName}}
  351. </li>
  352. <%-- <li class="add" id="addPic">
  353. <div class="bg"><i class="layui-icon layui-icon-add-circle"></i></div>
  354. </li>--%>
  355. </ul>
  356. </div>
  357. </div>
  358. </form>
  359. </div>
  360. </div>
  361. </div>
  362. </div>
  363. </div>
  364. </template>
  365. <script>
  366. new Vue({
  367. el: "#app",
  368. template: "#template",
  369. data: {
  370. weekInfo: {},
  371. weekData: [],
  372. monthInfo: {},
  373. monthData: [],
  374. monthImages: [],
  375. winH: 0,
  376. collapse: false,
  377. tabActive: 2,
  378. active: 4, // 左侧菜单选中项
  379. imgLs: 10,
  380. images: [],
  381. amtYear: 0,
  382. yearsArray: [],
  383. reportArray: [{id: 'week', label: '周报'}, {id: 'month', label: "月报"}],
  384. reportItem: 'week',
  385. planYear: "",
  386. planAmt: 0,
  387. rtAmt: 0,
  388. },
  389. mounted() {
  390. this.init()
  391. },
  392. methods: {
  393. init() {
  394. this.winH = document.body.clientHeight
  395. const {laydate, table} = layui;
  396. var self = this;
  397. laydate.render({
  398. elem: '#year',
  399. type: 'year',
  400. value: new Date().format("yyyy"),
  401. done: function (value) {
  402. self.loadData(value);
  403. }
  404. })
  405. this.getYearArray(${beginYear}, ${endYear})
  406. this.loadData(new Date().format("yyyy"));
  407. },
  408. clickReport(item) {
  409. this.reportItem = item.id
  410. if (item.id === 'week') {
  411. $("#divWeek").show()
  412. $("#divMonth").hide()
  413. }
  414. if (item.id === 'month') {
  415. $("#divMonth").show()
  416. $("#divWeek").hide()
  417. }
  418. //alert(JSON.stringify(item))
  419. },
  420. loadTable(data) {
  421. layui.table.render({
  422. elem: '#table1', // 指定原始表格元素选择器(推荐id选择器)
  423. even: true,
  424. limit: 12,
  425. cols: [[ // 设置表头
  426. {field: 'kjMonth', title: '月份', width: '80', totalRowText: '合计'},
  427. {
  428. field: 'amtPlan',
  429. totalRow: true,
  430. title: '年初计划投资(万元)<br><span style="font-size: 12px;">项目单位填写</span>',
  431. width: '15%',
  432. templet: function (row) {
  433. if (row.amtPlan != null && row.amtPlan != 'undefined') {
  434. return "<span>" + row.amtPlan + "</span>";
  435. } else {
  436. return "";
  437. }
  438. }
  439. },
  440. {
  441. field: 'amt',
  442. totalRow: true,
  443. title: '月度动态计划投资(万元)<br><span style="font-size: 12px;">项目单位填写</span>',
  444. width: '15%',
  445. templet: function (row) {
  446. if (row.amt != null && row.amt != 'undefined') {
  447. var amtLast = row.amtLast ? row.amtLast : 0;
  448. return "<span>本月实际:" + row.amt + "</span><br><span>下月计划:" + amtLast + "</span>";
  449. } else {
  450. return "";
  451. }
  452. }
  453. },
  454. {
  455. field: 'assignAmt',
  456. title: '月度任务(万元)<br><span style="font-size: 12px;">行业部门填写</span>',
  457. align: 'center',
  458. type: 'string',
  459. width: '14%',
  460. totalRow: true,
  461. templet: function (row) {
  462. if (row.assignAmt) {
  463. return "<span>" + row.assignAmt + "</span>";
  464. } else {
  465. return "";
  466. }
  467. }
  468. },
  469. {
  470. field: 'remark',
  471. title: '备注',
  472. align: 'center',
  473. type: 'string',
  474. width: '14%',
  475. templet: function (row) {
  476. if (row.remark) {
  477. return "<span>" + row.remark + "</span>";
  478. } else {
  479. return "";
  480. }
  481. }
  482. },
  483. {
  484. field: 'amtRt',
  485. title: '入统金额(万元)<br><span style="font-size: 12px;">行业部门填写</span>',
  486. align: 'center',
  487. type: 'string',
  488. width: '14%',
  489. totalRow: true,
  490. templet: function (row) {
  491. if (row.amtRt) {
  492. return "<span>" + row.amtRt + "</span>";
  493. } else {
  494. return "";
  495. }
  496. }
  497. },
  498. {
  499. field: 'amtPldz',
  500. title: '月偏离值(万元)',
  501. align: 'center',
  502. type: 'string',
  503. width: '14%',
  504. templet: function (row) {
  505. if (row.amtRt != null && row.amtRt + '' != '') {
  506. return '<span>' + (parseInt(row.amt || 0) - parseInt(row.amtRt)) + '</span>';
  507. } else {
  508. if (row.amt != null && row.amt + '' != '') {
  509. return '<span>' + (row.amt || 0) + '</span>';
  510. } else {
  511. return "";
  512. }
  513. }
  514. }
  515. },
  516. {
  517. field: 'amtPld',
  518. title: '月偏离度',
  519. align: 'center',
  520. type: 'string',
  521. width: '12%',
  522. templet: function (row) {
  523. if (row.assignAmt != null && row.assignAmt != 0 && row.assignAmt + '' != '' && row.amtRt != null && row.amtRt != 0 && row.amtRt + '' != '') {
  524. return '<span>' + ((parseInt(row.amtRt || 0) - parseInt(row.assignAmt)) * 100 / parseInt(row.assignAmt)).toFixed(2) + '%</span>';
  525. } else {
  526. return "";
  527. }
  528. }
  529. }
  530. ]],
  531. totalRow: true, //开启合计行
  532. fixed: true,
  533. height: window.screen.availHeight - 450,
  534. data: data
  535. , done: function (res, curr, count) {
  536. var sumAmt = 0;
  537. var sumLast = 0;
  538. for (let i = 0; i < res.data.length; i++) {
  539. var row = res.data[i];
  540. sumLast = sumLast + (row.amtLast ? row.amtLast : 0);
  541. sumAmt = sumAmt + (row.amt ? row.amt : 0);
  542. }
  543. /* if (row.amt != null && row.amt != 'undefined') {
  544. var amtLast = row.amtLast ? row.amtLast : 0;
  545. return "<span>本月实际:" + row.amt + "</span><br><span>下月计划:" + amtLast + "</span>";
  546. } else {
  547. return "";
  548. }*/
  549. var text = "<span>本月实际:" + sumAmt + "</span><br><span>下月计划:" + sumLast + "</span>";
  550. this.elem.next().find('.layui-table-total td[data-field="amt"] .layui-table-cell').html(text);
  551. }
  552. })
  553. var self = this;
  554. layui.table.on('edit(test)', function (obj) { //注:edit是固定事件名,test是table原始容器的属性 lay-filter="对应的值"
  555. console.log(obj.value); //得到修改后的值
  556. console.log(obj.field); //当前编辑的字段名
  557. console.log(obj.data); //所在行的所有相关数据
  558. var subId = $("#subId").val();
  559. var oldText = $(this).prev().text();
  560. if (obj.field === 'assignAmt') {
  561. if (obj.value != '' && !isNumber(obj.value)) {
  562. App.msg.warn("请填写数字");
  563. $(this).val(oldText);
  564. obj.value = oldText;
  565. obj.data[obj.field] = oldText;
  566. obj.update(obj.data);
  567. }
  568. var list = [{
  569. amt: obj.data.amtPlan,
  570. assignAmt: obj.data.assignAmt,
  571. remark: obj.data.remark,
  572. remark: obj.data.remark,
  573. ymonth: obj.data.kjMonth,
  574. id: obj.data.planId
  575. }]
  576. App.postJson("/api/amtPlan/save", {subId: subId, amtPlans: list}, function (res) {
  577. if (res.success) {
  578. layer.msg("成功", {icon: 6, time: 1000});
  579. self.monthAmt(self.planYear);
  580. }
  581. });
  582. }
  583. if (obj.field === 'remark') {
  584. var list = [{
  585. amt: obj.data.amtPlan,
  586. assignAmt: obj.data.assignAmt,
  587. remark: obj.data.remark,
  588. remark: obj.data.remark,
  589. ymonth: obj.data.kjMonth,
  590. id: obj.data.planId
  591. }]
  592. App.postJson("/api/amtPlan/save", {subId: subId, amtPlans: list}, function (res) {
  593. if (res.success) {
  594. layer.msg("成功", {icon: 6, time: 1000});
  595. self.monthAmt(self.planYear);
  596. }
  597. });
  598. }
  599. if (obj.field === 'amtRt') {
  600. if (obj.value != '' && !isNumber(obj.value)) {
  601. App.msg.warn("请填写数字");
  602. $(this).val(oldText);
  603. obj.value = oldText;
  604. obj.data[obj.field] = oldText;
  605. obj.update(obj.data);
  606. }
  607. //保存投资金额
  608. var data = {};
  609. data.subId = subId
  610. data.amtRt = obj.value
  611. data.year = obj.data.kjMonth.substring(0, 4)
  612. data.month = obj.data.kjMonth.substring(4, 6)
  613. data.date = "01"
  614. data.beginDate = data.year + "-" + data.month + "-" + data.date
  615. data.endDate = null
  616. // alert(JSON.stringify(data))
  617. App.postJson("/api/monthReport/saveReportRtAmt", data, function (res) {
  618. if (res.success) {
  619. layer.msg("保存成功");
  620. self.monthAmt(self.planYear);
  621. }
  622. });
  623. }
  624. });
  625. },
  626. loadTable_weekReport(data) {
  627. layui.table.render({
  628. elem: '#table_zb', // 指定原始表格元素选择器(推荐id选择器)
  629. even: true,
  630. limit: data.length,
  631. cols: [[ // 设置表头
  632. {field: 'kjMonth', title: '周报期间', width: '30%'},
  633. // {field: 'amt', title: '本月实际投资', width: '20%', templet: function(row){
  634. // if(row.amt){
  635. // return "<span>"+row.amt+"万元</span>";
  636. // }else{
  637. // return "";
  638. // }
  639. // }},
  640. {field: 'content', title: '项目进展情况', width: '70%'}
  641. ]],
  642. data: data,
  643. fixed: true,
  644. height: window.screen.availHeight - 350,
  645. })
  646. },
  647. /* loadTable_amtPlan: function (data) {
  648. var self = this;
  649. layui.table.render({
  650. elem: '#amtPlan', // 指定原始表格元素选择器(推荐id选择器)
  651. even: true,
  652. cols: [[ // 设置表头
  653. {type: 'numbers', title: '序号'},
  654. {field: 'ymonth', title: '年月', minWidth: 100},
  655. {field: 'amt', title: '当月资金(万元)', minWidth: 100},
  656. {field: 'remark', title: '备注', minWidth: 100, edit: 'text'}
  657. ]],
  658. fixed: true,
  659. height: window.screen.availHeight - 350,
  660. width:'50%',
  661. limit: data.length,
  662. data: data
  663. });
  664. }, */
  665. monthAmt: function (year) {
  666. var self = this;
  667. var subId = $("#subId").val();
  668. App.postJson("/api/amtPlan/getBySubId", {subId: subId, year: year}, function (res) {
  669. if (res.success) {
  670. self.planAmt = res.data.planAmt;
  671. //self.loadTable_amtPlan(res.data.list || []);
  672. /* setTimeout(function () {
  673. layui.form.render();
  674. }, 200); */
  675. App.postJson("/api/rptCont/getListBySub", {subId: subId, year: year}, function (re) {
  676. if (res.success) {
  677. self.amtYear = re.data.amtYear;
  678. self.amtRt = re.data.amtRt;
  679. var datas = self.getMonthArray(year);
  680. for (let j = 0; j < datas.length; j++) {
  681. for (let i = 0; i < re.data.data.length; i++) {
  682. if (re.data.data[i].kjMonth == datas[j].kjMonth) {
  683. datas[j] = re.data.data[i];
  684. }
  685. }
  686. for (let i = 0; i < res.data.list.length; i++) {
  687. if (res.data.list[i].ymonth == datas[j].kjMonth) {
  688. datas[j].amtPlan = res.data.list[i].amt;
  689. datas[j].assignAmt = res.data.list[i].assignAmt;
  690. datas[j].remark = res.data.list[i].remark;
  691. datas[j].remark = res.data.list[i].remark;
  692. datas[j].planId = res.data.list[i].id;
  693. }
  694. }
  695. }
  696. self.loadTable(datas);
  697. const now = new Date();
  698. var curMonth = now.format("yyyyMM");
  699. self.monthInfo = datas.find((item) => {
  700. return item.kjMonth === curMonth
  701. })
  702. if (!self.monthInfo) {
  703. self.monthInfo = datas[0]
  704. }
  705. self.monthData = datas
  706. self.createMonthSelect(datas)
  707. self.setMonthFileValue(self.monthInfo.subId, self.monthInfo.year, self.monthInfo.beginDate)
  708. }
  709. });
  710. }
  711. });
  712. },
  713. setMonthFileValue: function (subId, year, kj_month) {
  714. if (!kj_month) {
  715. this.monthImages = [];
  716. return
  717. }
  718. var self = this;
  719. /* var date = new Date();*/
  720. /* alert(kj_month)
  721. alert(kj_month.split("-")[0])
  722. alert(kj_month.split("-")[1])
  723. date.setYear(kj_month.split("-")[0]);
  724. date.setMonth(kj_month.split("-")[1]+1);
  725. date.setDate(1);
  726. alert(date.format("yyyy-MM-dd"));*/
  727. App.postJson("/api/monthReport/getByInfo", {
  728. subId: subId,
  729. year: year,
  730. startDate: kj_month.split("-")[0] + "-" + kj_month.split("-")[1] + "-" + "01"
  731. }, function (res) {
  732. setTimeout(() => {
  733. self.monthImages = res.data || [];
  734. layui.form.render();
  735. }, 300);
  736. });
  737. // this.setValueEdit(row);
  738. },
  739. createMonthSelect() {
  740. $("#month").html();
  741. //alert(curMonth);
  742. var options = '<option value="">--请选择--</option>'
  743. for (let i = 0; i < this.monthData.length; i++) {
  744. if (this.monthInfo.id === this.monthData[i].id) {
  745. options += '<option value="' + this.monthData[i].id + '" selected>' + this.monthData[i].kjMonth + '</option>'
  746. } else {
  747. options += '<option value="' + this.monthData[i].id + '">' + this.monthData[i].kjMonth + '</option>'
  748. }
  749. }
  750. $("#month").html(options);
  751. layui.form.render();
  752. var self = this;
  753. layui.form.on('select(month)', function (data) {
  754. self.monthInfo = self.monthData.find((item) => {
  755. return item.id === data.value
  756. })
  757. if (self.monthInfo) {
  758. self.setMonthFileValue(self.monthInfo.subId, self.monthInfo.year, self.monthInfo.beginDate)
  759. } else {
  760. self.monthInfo = {}
  761. self.monthImages = []
  762. }
  763. });
  764. },
  765. loadData(year) {
  766. var self = this;
  767. var subId = $("#subId").val();
  768. App.postJson("/api/weekReport/getListBySub", {subId: subId, year: year}, function (res) {
  769. if (res.success) {
  770. var datas = res.data;
  771. for (let i = 0; i < datas.length; i++) {
  772. datas[i].kjMonth = datas[i].beginDate + "至" + datas[i].endDate
  773. }
  774. /* self.loadTable_weekReport(datas);*/
  775. /* alert(JSON.stringify(datas))*/
  776. self.weekInfo = datas[0]
  777. self.weekData = datas
  778. self.createSelect(datas)
  779. self.setFileValue(self.weekInfo.subId, self.weekInfo.year, self.weekInfo.beginDate)
  780. }
  781. });
  782. },
  783. createSelect() {
  784. $("#week").html();
  785. var options = '<option value="">--请选择--</option>'
  786. for (let i = 0; i < this.weekData.length; i++) {
  787. if (this.weekInfo.id === this.weekData[i].id) {
  788. options += '<option value="' + this.weekData[i].id + '" selected>' + this.weekData[i].kjMonth + '</option>'
  789. } else {
  790. options += '<option value="' + this.weekData[i].id + '">' + this.weekData[i].kjMonth + '</option>'
  791. }
  792. }
  793. $("#week").html(options);
  794. layui.form.render();
  795. var self = this;
  796. layui.form.on('select(week)', function (data) {
  797. self.weekInfo = self.weekData.find((item) => {
  798. return item.id === data.value
  799. })
  800. if (self.weekInfo) {
  801. self.setFileValue(self.weekInfo.subId, self.weekInfo.year, self.weekInfo.beginDate)
  802. } else {
  803. self.weekInfo = {}
  804. self.images = []
  805. }
  806. });
  807. },
  808. setFileValue: function (subId, year, beginDate) {
  809. var self = this;
  810. App.postJson("/api/weekReport/getByInfo", {
  811. subId: subId,
  812. year: year,
  813. startDate: beginDate
  814. }, function (res) {
  815. setTimeout(() => {
  816. self.images = res.data || [];
  817. }, 300);
  818. });
  819. },
  820. getMonthArray(year) {
  821. var month = "";
  822. var months = [];
  823. for (var i = 1; i < 13; i++) {
  824. if (i < 10) {
  825. month = "0" + i;
  826. } else {
  827. month = "" + i
  828. }
  829. months.push({kjMonth: year + month});
  830. }
  831. return months;
  832. },
  833. getYearArray: function (startTime, endTime) {
  834. var self = this;
  835. var now = new Date();
  836. self.planYear = now.getFullYear();
  837. console.log(startTime, endTime)
  838. const startYear = startTime;
  839. const endYear = endTime;
  840. console.log(startYear, endYear);
  841. if (endYear > self.planYear) {
  842. self.yearsArray = Array.from({length: self.planYear - startYear + 2}, (_, i) => startYear + i);
  843. } else if (endYear <= self.planYear) {
  844. self.planYear = endYear;
  845. self.yearsArray = Array.from({length: endYear - startYear + 2}, (_, i) => startYear + i);
  846. } else {
  847. self.planYear = startYear;
  848. self.yearsArray = [startYear];
  849. }
  850. self.yearsArray.reverse();
  851. if (self.yearsArray.length > 5) {
  852. self.yearsArray = self.yearsArray.slice(0, 5);
  853. }
  854. self.monthAmt(self.planYear);
  855. },
  856. clickYear: function (year) {
  857. var self = this;
  858. self.planYear = year;
  859. self.monthAmt(year);
  860. this.weekInfo = {content: ""};
  861. this.images = [];
  862. self.loadData(year);
  863. this.monthInfo = {content: ""};
  864. this.monthImages = [];
  865. // self.selectYearPlan(year);
  866. },
  867. showTitle(obj) {
  868. return "附件名称:" + obj.fileName;
  869. },
  870. download(fileId, fileName) {
  871. var url = "static/file/download/" + fileId;
  872. App.common.utils.downFile(App.getUrl(url));
  873. },
  874. showImage: function (fileId, type, createTime) {
  875. var imageUrl = "";
  876. var realUrl = "";
  877. var mp4Url = "";
  878. if (type == 8) {
  879. imageUrl = "${domain}/static/file/" + fileId + "/showfile";
  880. } else if (type == null || type == "") {
  881. } else if (type == 101 || type == 102 || type == 103 || type == 104 || type == 105) {
  882. imageUrl = "${domain}/static/file/" + fileId + "/showfile";
  883. } else if (type == 4 || type == 5) {
  884. imageUrl = "${WebSite.asset}/css/images/excel.png";
  885. realUrl = "/static/file/download/" + fileId + "";
  886. } else if (type == 2 || type == 3) {
  887. imageUrl = "${WebSite.asset}/css/images/word.png";
  888. realUrl = "/static/file/download/" + fileId + "";
  889. } else {
  890. imageUrl = '<video width="100%" height="100%" controls="controls" autobuffer="autobuffer" autoplay="autoplay" loop="loop"><source src="${domain}/static/file/' + fileId + '/showfile" type="video/mp4"></source></video>';
  891. }
  892. if (imageUrl) {
  893. if (type == 2 || type == 3 || type == 4 || type == 5) {
  894. window.location.href = App.getUrl(realUrl);
  895. } else if (type == 203) {
  896. layer.open({
  897. type: 1,
  898. title: '播放视频',
  899. content: imageUrl,
  900. offset: 'auto',
  901. area: ['60%', '60%'],
  902. shade: 0.5,
  903. shadeClose: true
  904. });
  905. } else {
  906. if (type == 8) {
  907. // var pdfIndex = layer.open({
  908. // type: 2,
  909. // content: imageUrl,
  910. // area: ['80%', '80%'],
  911. // offset: 'auto'
  912. // });
  913. // layer.full(pdfIndex);
  914. window.open(imageUrl)
  915. } else {
  916. App.common.utils.imageWater(imageUrl, createTime, function (image) {
  917. layer.photos({
  918. photos: {
  919. "title": "",
  920. "id": fileId,
  921. "start": 0,
  922. "data": [
  923. {
  924. "alt": "",
  925. "pid": fileId,
  926. "src": image,
  927. "thumb": imageUrl
  928. }
  929. ]
  930. },
  931. anim: 5
  932. });
  933. });
  934. }
  935. }
  936. }
  937. },
  938. picShow(fileId, type) {
  939. var tempId = "#" + fileId;
  940. if (type == 8) {
  941. return "${WebSite.asset}/css/images/pdf.png";
  942. } else if (type == null || type == "") {
  943. } else if (type == 101 || type == 102 || type == 103 || type == 104 || type == 105) {
  944. return "${domain}/static/file/" + fileId + "/showfile";
  945. } else if (type == 4 || type == 5) {
  946. return "${WebSite.asset}/css/images/excel.png";
  947. } else if (type == 2 || type == 3) {
  948. return "${WebSite.asset}/css/images/word.png";
  949. } else if (type == 203) {
  950. return "${WebSite.asset}/css/images/video.png";
  951. }
  952. },
  953. }
  954. });
  955. </script>
  956. </body>
  957. </html>