reportChangeModifyApply.jsp 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. <%@ page contentType="text/html;charset=UTF-8" %>
  2. <%@ include file="/webpage/include/taglib.jsp"%>
  3. <html>
  4. <head>
  5. <title>报告详情管理</title>
  6. <meta name="decorator" content="default"/>
  7. <script type="text/javascript">
  8. var validateForm;
  9. function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
  10. if(validateForm.form()){
  11. $("#inputForm").submit();
  12. return true;
  13. }
  14. return false;
  15. }
  16. function hasInArr(id,idArr) {
  17. for(var i=0;i<idArr.length;i++){
  18. if(id==$(idArr[i]).val()){
  19. return true;
  20. }
  21. }
  22. return false;
  23. }
  24. $(document).ready(function() {
  25. validateForm = $("#inputForm").validate({
  26. submitHandler: function(form){
  27. loading('正在提交,请稍等...');
  28. form.submit();
  29. },
  30. errorContainer: "#messageBox",
  31. errorPlacement: function(error, element) {
  32. $("#messageBox").text("输入有误,请先更正。");
  33. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  34. error.appendTo(element.parent().parent());
  35. } else {
  36. error.insertAfter(element);
  37. }
  38. }
  39. });
  40. laydate.render({
  41. elem: '#reportDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
  42. event: 'focus', //响应事件。如果没有传入event,则按照默认的click
  43. type : 'date'
  44. });
  45. $("#attachment_btn").click(function () {
  46. $("#attachment_file").click();
  47. });
  48. });
  49. function insertTitle(tValue){
  50. var files = $("#attachment_file")[0].files; for(var i = 0;i<files.length;i++) { var file = files[i];
  51. var attachmentId = "";
  52. var attachmentFlag = "84";
  53. console.log(file);
  54. var timestamp=new Date().getTime();
  55. var storeAs = "attachment-file/basedData/"+timestamp+"/"+file['name'];
  56. var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
  57. var divId = "_attachment";
  58. $("#addFile"+divId).show();
  59. multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,"0");
  60. }
  61. }
  62. function openDialogre(title,url,width,height,formId){
  63. if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
  64. width='auto';
  65. height='auto';
  66. }else{//如果是PC端,根据用户设置的width和height显示。
  67. }
  68. top.layer.open({
  69. type: 2,
  70. area: [width, height],
  71. title: title,
  72. skin: 'three-btns',
  73. maxmin: true, //开启最大化最小化按钮
  74. content: url ,
  75. btn: ['提交','关闭'],
  76. btn1: function(index, layero){
  77. var body = top.layer.getChildFrame('body', index);
  78. var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
  79. var inputForm = body.find('#inputForm');
  80. var top_iframe;
  81. inputForm.attr("action","${ctx}/projectcontentinfo/projectcontentinfo/ajaxsaveBaseData");//表单提交成功后,从服务器返回的url在当前tab中展示
  82. var $document = iframeWin.contentWindow.document;
  83. formSubmitAjax($document,formId,index);
  84. },
  85. btn2: function(index){
  86. }
  87. });
  88. }
  89. function formSubmitAjax($document,inputForm,index){
  90. var validateForm = $($document.getElementById(inputForm)).validate({
  91. submitHandler: function(form){
  92. loading('正在提交,请稍等...');
  93. form.submit();
  94. },
  95. errorContainer: "#messageBox",
  96. errorPlacement: function(error, element) {
  97. $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
  98. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  99. error.appendTo(element.parent().parent());
  100. } else {
  101. error.insertAfter(element);
  102. }
  103. }
  104. });
  105. if(validateForm.form()){
  106. $($document.getElementById(inputForm)).ajaxSubmit({
  107. success:function(data) {
  108. if(!data.success){
  109. top.layer.msg("保存依据资料信息异常!",{icon:2});
  110. return false;
  111. }
  112. var idx = $("#workBaseDataList tr").length;
  113. addRowBaseData("#workBaseDataList",idx,workBaseDataTpl,data.body.workBasedData);
  114. parent.layer.msg(data.msg,{icon:1});
  115. top.layer.close(index)
  116. }
  117. });
  118. }
  119. }
  120. function delRowBaseData(obj, prefix,userId){
  121. var id = $(prefix+"_id").val();
  122. /* var createBy = $(prefix+"_userId").val();*/
  123. var currentUser = '${fns:getUser().id}';
  124. var contentId = '${projectcontentinfo.projectContentData.id}';
  125. console.log(contentId);
  126. $.ajax({
  127. type:"post",
  128. url:'${ctx}/projectcontentinfo/projectContentData/ajaxdelete',
  129. data:{"contentId":contentId,"basedId":id},
  130. dataType:"json",
  131. success:function(data){
  132. if(data.success) {
  133. $(obj).parent().parent().remove();
  134. /*parent.parent.refreshTrees();*/
  135. if(data.body.inuse){
  136. return;
  137. }
  138. if (currentUser == userId) {
  139. confirmDelete('是否同步删除资料库的文件?','${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+id+'&id=${projectcontentinfo.id}&type=1');
  140. }
  141. }else {
  142. top.layer.msg("删除依据资料失败!", {icon: 0});
  143. }
  144. }
  145. })
  146. return;
  147. }
  148. // 确认对话框
  149. function reviewAudits(mess, href,obj,remarks){
  150. top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
  151. console.log(remarks);
  152. var remark = $(remarks);
  153. remark.val("确认");
  154. $("#check1"+obj).attr("style","display:none");
  155. $("#check2"+obj).attr("style","display");
  156. top.layer.msg("已确认!", {icon: 1});
  157. top.layer.close(index);
  158. });
  159. return false;
  160. }
  161. function addReview(obj) {
  162. var infoId = $("#id").val();
  163. var name = $("#name").val();
  164. $.ajax({
  165. type:"post",
  166. url:'${ctx}/projectcontentinfo/projectContentData/addReview',
  167. data:{"reviewId":obj,"name":name,"infoId":infoId},
  168. dataType:"json",
  169. success:function(data){
  170. if(data.success) {
  171. $("#projectContentDataList2").html("");
  172. var list = eval(data.body.list);
  173. for(var i in list){
  174. var tr = "<tr>" +
  175. "<td>" +
  176. "<input id=\"projectReviewList"+i+"_id\" name=\"projectReportData.projectReviewList["+i+"].id\" type=\"hidden\" value=\""+list[i].id+"\"/>" +
  177. "<input id=\"projectReviewList"+i+"_delFalg\" name=\"projectReportData.projectReviewList["+i+"].delFalg\" type=\"hidden\" value=\"1\"/>" +
  178. "<input id=\"projectReviewList"+i+"_remarks\" name=\"projectReportData.projectReviewList["+i+"].remarks\" type=\"hidden\" value=\"\"/>" +
  179. ""+i+1+"" +
  180. "</td>" +
  181. "<td>" +
  182. ""+list[i].standardDetail+"" +
  183. "</td>" +
  184. "<td>" +
  185. "<div id = \"check1"+list[i].id+"\">\n" +
  186. "<input type=\"hidden\" id=\"audit"+list[i].id+"\" value=\"0\"/>\n" +
  187. "<a href=\"projectReviewList"+list[i]+"\" onclick=\"return reviewAudits('确认要审核该质量复核内容吗?', this.href,'"+list[i].id+"','#projectReviewList"+i+"_remarks')\" style=\"color:#fff;\" class=\"op-btn op-btn-edit\">确认</a>" +
  188. "</div>\n" +
  189. "<div id = \"check2"+list[i].id+"\" class=\"check-ok\" style=\"display: none\">" +
  190. "<i class=\"fa fa-check\"></i>" +
  191. "</div>"
  192. "</td>" +
  193. "</tr>";
  194. $("#projectContentDataList2").append(tr);
  195. }
  196. }else {
  197. top.layer.msg("获取数据失败!", {icon: 0});
  198. }
  199. }
  200. })
  201. }
  202. </script>
  203. </head>
  204. <body>
  205. <div class="single-form">
  206. <div class="container${container}">
  207. <form:form id="inputForm" modelAttribute="projectcontentinfo" action="${ctx}/projectcontentinfo/projectcontentinfo/reportChangeAudit?view=reportChangeModify" method="post" class="form-horizontal">
  208. <form:hidden path="id"/>
  209. <form:hidden path="name"/>
  210. <form:hidden path="home"/>
  211. <form:hidden path="parentIds"/>
  212. <form:hidden path="edit"/>
  213. <form:hidden path="project.id"/>
  214. <form:hidden path="projectReportData.id"/>
  215. <form:hidden path="projectReportData.reportId"/>
  216. <form:hidden path="projectReportData.createBy.id"/>
  217. <form:hidden path="projectReportData.act.taskId"/>
  218. <form:hidden path="projectReportData.act.taskName"/>
  219. <form:hidden path="projectReportData.act.taskDefKey"/>
  220. <form:hidden path="projectReportData.act.procInsId"/>
  221. <form:hidden path="projectReportData.act.procDefId"/>
  222. <form:hidden id="flag" path="projectReportData.act.flag"/>
  223. <sys:message content="${message}"/>
  224. <div class="form-group layui-row first lw12">
  225. <div class="form-group-label"><h2>基本信息</h2></div>
  226. <div class="layui-item layui-col-sm6">
  227. <label class="layui-form-label"><span class="require-item">*</span>报告名称:</label>
  228. <div class="layui-input-block with-icon">
  229. <form:input path="projectReportData.name" htmlEscape="false" class="form-control layui-input required"/>
  230. </div>
  231. </div>
  232. <div class="layui-item layui-col-sm6">
  233. <label class="layui-form-label">报告编号:</label>
  234. <div class="layui-input-block">
  235. <div class="input-group">
  236. <form:input path="projectReportData.number" readonly="true" htmlEscape="false" class="form-control layui-input "/>
  237. <span class="input-group-btn">
  238. <label class="form-status">
  239. <c:choose>
  240. <c:when test="${not empty projectcontentinfo.projectReportData.status}">${fns:getDictLabel(projectcontentinfo.projectReportData.status, 'audit_state', '')}
  241. </c:when>
  242. <c:otherwise>新添</c:otherwise>
  243. </c:choose></label>
  244. </span>
  245. </div>
  246. </div>
  247. </div>
  248. <div class="layui-item layui-col-sm6">
  249. <label class="layui-form-label"><span class="require-item">*</span>工作内容类型:</label>
  250. <div class="layui-input-block">
  251. <form:select path="projectReportData.type" htmlEscape="false" class="form-control simple-select required">
  252. <form:option value="" label=""/>
  253. <optgroup label="决策阶段"/>
  254. <form:options items="${fns:getProjectContentTypeList('1',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  255. <optgroup label="设计阶段"/>
  256. <form:options items="${fns:getProjectContentTypeList('2',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  257. <optgroup label="发承包阶段"/>
  258. <form:options items="${fns:getProjectContentTypeList('3',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  259. <optgroup label="实施阶段"/>
  260. <form:options items="${fns:getProjectContentTypeList('4',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  261. <optgroup label="竣工阶段"/>
  262. <form:options items="${fns:getProjectContentTypeList('5',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  263. <optgroup label="运营阶段"/>
  264. <form:options items="${fns:getProjectContentTypeList('6',projectcontentinfo.project.id)}" itemLabel="typeName" itemValue="typeId"></form:options>
  265. </form:select>
  266. </div>
  267. </div>
  268. <div class="layui-item layui-col-sm6">
  269. <label class="layui-form-label"><span class="require-item">*</span>成果类型:</label>
  270. <div class="layui-input-block">
  271. <form:select path="projectReportData.achievementType" class="form-control simple-select required">
  272. <form:option value="" label=""/>
  273. <form:options items="${fns:getMainDictList('achievement_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  274. </form:select>
  275. </div>
  276. </div>
  277. <div class="layui-item layui-col-sm6">
  278. <label class="layui-form-label"><span class="require-item">*</span>复核标准:</label>
  279. <div class="layui-input-block">
  280. <form:select path="projectReportData.reviewStandard" class="form-control simple-select required" onchange="addReview(this.value)">
  281. <form:option value="" label=""/>
  282. <form:options items="${fns:getDictList('reviewStandard')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
  283. </form:select>
  284. </div>
  285. </div>
  286. <div class="layui-item layui-col-sm6">
  287. <label class="layui-form-label"><span class="require-item">*</span>变更日期:</label>
  288. <div class="layui-input-block">
  289. <input id="reportDate" name="projectReportData.reportDate" type="text" htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
  290. value="<fmt:formatDate value="${projectcontentinfo.projectReportData.reportDate}" pattern="yyyy-MM-dd"/>"/>
  291. </div>
  292. </div>
  293. <%--<div class="layui-item layui-col-sm6">
  294. <label class="layui-form-label">签字造价师一:</label>
  295. <div class="layui-input-block with-icon">
  296. <sys:treeselect id="signCostOne" name="projectReportData.signCostOne.id" value="${projectcontentinfo.projectReportData.signCostOne.id}" labelName="projectReportData.signCostOne.name" labelValue="${projectcontentinfo.projectReportData.signCostOne.name}"
  297. title="签字造价师一" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/></div>
  298. </div>
  299. <div class="layui-item layui-col-sm6">
  300. <label class="layui-form-label">签字造价师二:</label>
  301. <div class="layui-input-block with-icon">
  302. <sys:treeselect id="signCostTwo" name="projectReportData.signCostTwo.id" value="${projectcontentinfo.projectReportData.signCostTwo.id}" labelName="projectReportData.signCostTwo.name" labelValue="${projectcontentinfo.projectReportData.signCostTwo.name}"
  303. title="签字造价师二" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
  304. </div>
  305. </div>--%>
  306. <div class="layui-item layui-col-sm6">
  307. <label class="layui-form-label"><span class="require-item">*</span>签章类型:</label>
  308. <div class="layui-input-block">
  309. <form:select path="projectReportData.reportType" class="form-control simple-select required">
  310. <form:option value="" label=""/>
  311. <form:option value="电子章" label="电子章"/>
  312. <form:option value="实体章" label="实体章"/>
  313. </form:select>
  314. </div>
  315. </div>
  316. <div class="layui-item layui-col-sm6 with-textarea">
  317. <label class="layui-form-label"><span class="require-item">*</span>变更原因:</label>
  318. <div class="layui-input-block">
  319. <form:textarea path="projectReportData.remarks" htmlEscape="false" rows="3" class="form-control "/>
  320. </div>
  321. </div>
  322. </div>
  323. <div class="form-group layui-row first lw12">
  324. <div class="form-group-label"><h2>依据性资料明细</h2></div>
  325. <div class="layui-item nav-btns">
  326. <a href="javascript:void(0)" onclick="openDialogre('新增依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType=${projectcontentinfo.dictType}&id=${projectcontentinfo.id}&parentIds=${projectcontentinfo.parentIds}','90%','90%','inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
  327. <sys:gridselectBaseData url="${ctx}/projectcontentinfo/projectBasedData/selectList" id="baseData" title="选择依据资料"
  328. cssClass="form-control" projectId="${projectcontentinfo.project.id}" fieldLabels="" fieldKeys="" searchLabel="依据资料名称" searchKey="name"></sys:gridselectBaseData>
  329. </div>
  330. <div class="layui-item layui-col-xs12 form-table-container">
  331. <table id="contentTableBase" class="table table-bordered table-condensed details">
  332. <thead>
  333. <tr>
  334. <th class="hide"></th>
  335. <th >资料编号</th>
  336. <th >资料名称</th>
  337. <th >资料类别</th>
  338. <th >上传人</th>
  339. <th >上传日期</th>
  340. <th>操作</th>
  341. </tr>
  342. </thead>
  343. <tbody id="workBaseDataList">
  344. <c:forEach items="${projectcontentinfo.projectReportData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
  345. <tr>
  346. <td class="hide">
  347. <input type="hidden" id="workBaseDataList${idx.index}_id" name="projectReportData.projectBasedDataList[${idx.index}].id" value="${projectBasedData.id}" class="clientId">
  348. <input type="hidden" id="workBaseDataList${idx.index}_delFalg" name="projectReportData.projectBasedDataList[${idx.index}].delFalg" value="1">
  349. </td>
  350. <td style="text-align:center;">
  351. ${projectBasedData.number}
  352. </td>
  353. <td style="text-align:center;">
  354. ${projectBasedData.name}
  355. </td>
  356. <td style="text-align:center;">
  357. ${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}
  358. </td>
  359. <td style="text-align:center;">
  360. ${projectBasedData.uploadUser.name}
  361. </td>
  362. <td style="text-align:center;">
  363. <fmt:formatDate value="${projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>
  364. </td>
  365. <td class="text-center op-td">
  366. <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList${idx.index}','${projectBasedData.uploadUser.id}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  367. </td>
  368. </tr>
  369. </c:forEach>
  370. </tbody>
  371. </table>
  372. </div>
  373. <script type="text/template" id="workBaseDataTpl">//<!--
  374. <tr id="budgetList{{idx}}">
  375. <td class="hide">
  376. <input id="workBaseDataList{{idx}}_id" name="projectReportData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
  377. <input id="workBaseDataList{{idx}}_number" name="projectReportData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
  378. <input id="workBaseDataList{{idx}}_name" name="projectReportData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
  379. <input id="workBaseDataList{{idx}}_type" name="projectReportData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
  380. </td>
  381. <td style="text-align:center;">
  382. {{row.number}}
  383. </td>
  384. <td style="text-align:center;">
  385. {{row.name}}
  386. </td>
  387. <td style="text-align:center;">
  388. {{row.typeLabel}}
  389. </td>
  390. <td style="text-align:center;">
  391. {{row.uploadUser.name}}
  392. </td>
  393. <td style="text-align:center;">
  394. {{row.uploadDate}}
  395. </td>
  396. <td class="text-center op-td">
  397. <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
  398. </td>
  399. </tr>//-->
  400. </script>
  401. <script type="text/javascript">
  402. var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  403. var workBaseDataRowIdx = ${fn:length(projectcontentinfo.projectReportData.projectBasedDataList)};
  404. /* function setValuee(obj){
  405. var idx = $("#workBaseDataList tr").length;
  406. if(existBaseData(obj.id,idx)) {
  407. return;
  408. }
  409. addRowBaseData("#workBaseDataList",idx,workBaseDataTpl,obj);
  410. }*/
  411. function setValuee(obj){
  412. for(var i=0;i<obj.length;i++){
  413. var idArr = $("#workBaseDataList tr:visible .clientId");
  414. if(obj[i].id!=''&&!hasInArr(obj[i].id,idArr)){
  415. addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTpl,obj[i]);
  416. workBaseDataRowIdx=workBaseDataRowIdx+1;
  417. }
  418. }
  419. }
  420. function existBaseData(id,length) {
  421. for (var i=0;i<length;i++) {
  422. var val = $('#workBaseDataList'+i+'_id').val();
  423. if(id==val){
  424. return true;
  425. }
  426. }
  427. return false;
  428. }
  429. function addRowBaseData(list, idx, tpl, row){
  430. bornTemplete(list, idx, tpl, row, idx);
  431. }
  432. function bornTemplete(list, idx, tpl, row, idx1){
  433. var idx1 = $("#workBaseDataList tr").length +1;
  434. $(list).append(Mustache.render(tpl, {
  435. idx: idx, delBtn: true, row: row,
  436. order:idx1 + 1, idx1:idx1
  437. }));
  438. $(list+idx).find("select").each(function(){
  439. $(this).val($(this).attr("data-value"));
  440. });
  441. $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
  442. var ss = $(this).attr("data-value").split(',');
  443. for (var i=0; i<ss.length; i++){
  444. if($(this).val() == ss[i]){
  445. $(this).attr("checked","checked");
  446. }
  447. }
  448. });
  449. }
  450. function delRowBaseData(obj, prefix,userId){
  451. var id = $(prefix+"_id").val();
  452. /* var createBy = $(prefix+"_userId").val();*/
  453. var currentUser = '${fns:getUser().id}';
  454. var contentId = '${projectcontentinfo.projectReportData.id}';
  455. console.log(contentId);
  456. $.ajax({
  457. type:"post",
  458. url:'${ctx}/projectcontentinfo/projectContentData/ajaxdelete',
  459. data:{"contentId":contentId,"basedId":id},
  460. dataType:"json",
  461. success:function(data){
  462. if(data.success) {
  463. $(obj).parent().parent().remove();
  464. /*parent.parent.refreshTrees();*/
  465. if(data.body.inuse){
  466. return;
  467. }
  468. if (currentUser == userId) {
  469. confirmDelete('是否同步删除资料库的文件?','${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+id+'&id=${projectcontentinfo.id}&type=1');
  470. }
  471. }else {
  472. top.layer.msg("删除依据资料失败!", {icon: 0});
  473. }
  474. }
  475. })
  476. return;
  477. }
  478. function confirmDelete(mess, href){
  479. top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
  480. //do something
  481. if (typeof href == 'function') {
  482. href();
  483. }else{
  484. $.ajax({
  485. url:href,
  486. type:"post",
  487. success:function(data){
  488. if(data.success){
  489. top.layer.msg("删除依据资料成功!", {icon: 0});
  490. }
  491. }
  492. });
  493. }
  494. top.layer.close(index);
  495. });
  496. return false;
  497. }
  498. </script>
  499. </div>
  500. <div class="form-group layui-row first lw12">
  501. <div class="form-group-label"><h2>依据工作内容</h2></div>
  502. <div class="layui-item layui-col-xs12 form-table-container">
  503. <!-- 表格 -->
  504. <div style="float: left;">
  505. <sys:gridselectContentData url="${ctx}/projectcontentinfo/projectContentData/selectcontentData" id="contentData" title="选择工作内容"
  506. cssClass="form-control" projectId="${projectcontentinfo.project.id}" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('工作内容名称')}" searchKey="name"></sys:gridselectContentData>
  507. </div>
  508. <table id="contentTable2" class="table table-bordered table-condensed details">
  509. <thead>
  510. <tr>
  511. <th style="text-align: center;width:15%">工作内容编号</th>
  512. <th style="text-align: center;width:20%">工作内容名称</th>
  513. <th style="text-align: center;width:15%">工作内容类型</th>
  514. <th style="text-align: center;width:15%">负责人</th>
  515. <th style="text-align: center;width:20%">创建时间</th>
  516. <th style="text-align: center;width:15%">操作</th>
  517. </tr>
  518. </thead>
  519. <tbody id="projectContentDataList">
  520. <c:forEach items="${projectcontentinfo.projectReportData.projectContentDataList}" var="projectContentData" varStatus="index">
  521. <tr>
  522. <td>
  523. <input id="projectContentDataList${index.index}_id" name="projectReportData.projectContentDataList[${index.index}].id" type="hidden" value="${projectContentData.id}"/>
  524. <input id="projectContentDataList${index.index}_delFalg" name="projectReportData.projectContentDataList[${index.index}].delFalg" type="hidden" value="1"/>
  525. ${projectContentData.number}
  526. </td>
  527. <td>
  528. ${projectContentData.name}
  529. </td>
  530. <td>
  531. ${fns:getContentTypeName(projectContentData.type,"")}
  532. </td>
  533. <td>
  534. ${projectContentData.master.name}
  535. </td>
  536. <td>
  537. <fmt:formatDate value="${projectContentData.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
  538. </td>
  539. <td>
  540. <a href="javascript:void(0)" onclick="delRowData(this, '#projectContentDataList${index.index}','${projectContentData.id}')" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
  541. </td>
  542. </tr>
  543. </c:forEach>
  544. </tbody>
  545. </table>
  546. <script type="text/template" id="projectContentDataTpl">//<!--
  547. <tr id="budgetList{{idx}}">
  548. <td class="hide">
  549. <input id="projectContentDataList{{idx}}_id" name="projectReportData.projectContentDataList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
  550. <input id="projectContentDataList{{idx}}_delFlag" name="projectReportData.projectContentDataList[{{idx}}]._delFlag" type="hidden" value="0"/>
  551. </td>
  552. <td style="text-align:center;">
  553. {{row.number}}
  554. </td>
  555. <td style="text-align:center;">
  556. {{row.name}}
  557. </td>
  558. <td style="text-align:center;">
  559. {{row.typeName}}
  560. </td>
  561. <td style="text-align:center;">
  562. {{row.master.name}}
  563. </td>
  564. <td style="text-align:center;">
  565. {{row.createDate}}
  566. </td>
  567. <td class="text-center" width="10">
  568. <a href="#" onclick="delRow(this, '#projectContentDataList{{idx}}','{{row.id}}')" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
  569. </td>
  570. </tr>//-->
  571. </script>
  572. <script type="text/javascript">
  573. var projectContentDataTpl = $("#projectContentDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
  574. function setValueeContent(obj){
  575. var idx = $("#projectContentDataList tr").length;
  576. if(existContentData(obj.id,idx)) {
  577. return;
  578. }
  579. addRowContentData("#projectContentDataList",idx,projectContentDataTpl,obj);
  580. }
  581. function existContentData(id,length) {
  582. for (var i=0;i<length;i++) {
  583. var val = $('#projectContentDataList'+i+'_id').val();
  584. if(id==val){
  585. return true;
  586. }
  587. }
  588. return false;
  589. }
  590. function addRowContentData(list, idx, tpl, row){
  591. bornTemplete(list, idx, tpl, row, idx);
  592. }
  593. function bornTemplete(list, idx, tpl, row, idx1){
  594. var idx1 = $("#workBaseDataList tr").length +1;
  595. $(list).append(Mustache.render(tpl, {
  596. idx: idx, delBtn: true, row: row,
  597. order:idx1 + 1, idx1:idx1
  598. }));
  599. $(list+idx).find("select").each(function(){
  600. $(this).val($(this).attr("data-value"));
  601. });
  602. $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
  603. var ss = $(this).attr("data-value").split(',');
  604. for (var i=0; i<ss.length; i++){
  605. if($(this).val() == ss[i]){
  606. $(this).attr("checked","checked");
  607. }
  608. }
  609. });
  610. }
  611. function delRow(obj, prefix){
  612. $(prefix+"_delFalg").val("1");
  613. $(obj).parent().parent().remove();
  614. }
  615. function delRowData(obj, prefix){
  616. var contentId = $(prefix+"_id").val();
  617. var reportId = '${projectcontentinfo.projectReportData.id}';
  618. var projectId = '${projectcontentinfo.project.id}';
  619. if(reportId!=null&&reportId!=''){
  620. $.ajax({
  621. type:"post",
  622. url:'${ctx}/projectcontentinfo/projectcontentinfo/ajaxContentdelete',
  623. data:{"contentId":contentId,"reportId":reportId,"projectId":projectId},
  624. dataType:"json",
  625. success:function(data){
  626. if(data.success) {
  627. $(obj).parent().parent().remove();
  628. }
  629. }
  630. })
  631. return;
  632. }
  633. }
  634. </script>
  635. </div>
  636. </div>
  637. <div class="form-group layui-row">
  638. <div class="form-group-label"><h2>报告文件</h2></div>
  639. <div class="layui-item nav-btns">
  640. <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
  641. </div>
  642. <div id="addFile_attachment" style="display: none" class="upload-progress">
  643. <span id="fileName_attachment" ></span>
  644. <b><span id="baifenbi_attachment" ></span></b>
  645. <div class="progress">
  646. <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
  647. </div>
  648. </div>
  649. </div>
  650. <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
  651. <span id="attachment_title"></span>
  652. <div class="layui-item layui-col-xs12" style="padding:0 16px;">
  653. <table id="upTable" class="table table-bordered table-condensed details">
  654. <thead>
  655. <tr>
  656. <%-- <th>序号</th>--%>
  657. <th>文件预览</th>
  658. <th>上传人</th>
  659. <th>上传时间</th>
  660. <th width="150px">操作</th>
  661. </tr>
  662. </thead>
  663. <tbody id="file_attachment">
  664. <c:forEach items="${projectcontentinfo.projectReportData.workAttachments}" var = "workClientAttachment" varStatus="status">
  665. <tr>
  666. <%-- <td>${status.index + 1}</td>--%>
  667. <c:choose>
  668. <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
  669. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
  670. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
  671. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
  672. or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
  673. <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
  674. </c:when>
  675. <c:otherwise>
  676. <c:choose>
  677. <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
  678. <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
  679. </c:when>
  680. <c:otherwise>
  681. <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
  682. </c:otherwise>
  683. </c:choose>
  684. </c:otherwise>
  685. </c:choose>
  686. <td>${workClientAttachment.createBy.name}</td>
  687. <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
  688. <td class="op-td">
  689. <div class="op-btn-box" >
  690. <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
  691. <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
  692. <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>
  693. </c:if>
  694. </div>
  695. </td>
  696. </tr>
  697. </c:forEach>
  698. </tbody>
  699. </table>
  700. </div>
  701. </div>
  702. <div class="form-group layui-row">
  703. <div class="form-group-label"><h2>自检</h2></div>
  704. <div class="layui-item layui-col-xs12 form-table-container">
  705. <table id="contentTable3" class="table details table-bordered table-condensed">
  706. <thead>
  707. <tr>
  708. <th style="text-align: center;width:15%">序号</th>
  709. <th style="text-align: center;width:70%">复核内容及评分标准</th>
  710. <th style="text-align: center;width:15%">操作</th>
  711. </tr>
  712. </thead>
  713. <tbody id="projectContentDataList2">
  714. <c:forEach items="${projectcontentinfo.projectReportData.projectReviewList}" var="projectReview" varStatus="index">
  715. <tr>
  716. <td>
  717. <input id="projectReviewList${index.index}_id" name="projectReportData.projectReviewList[${index.index}].id" type="hidden" value="${projectReview.id}"/>
  718. <input id="projectReviewList${index.index}_delFalg" name="projectReportData.projectReviewList[${index.index}].delFalg" type="hidden" value="1"/>
  719. <input id="projectReviewList${index.index}_remarks" name="projectReportData.projectReviewList[${index.index}].remarks" type="hidden" value="${projectReview.remarks}"/>
  720. ${index.index + 1}
  721. </td>
  722. <td>
  723. ${projectReview.standardDetail}
  724. </td>
  725. <td>
  726. <c:choose>
  727. <c:when test="${not empty projectReview.remarks}">
  728. <div class="check-ok">
  729. <i class="fa fa-check"></i>
  730. </div>
  731. </c:when>
  732. <c:otherwise>
  733. <div id = "check1${projectReview.id}">
  734. <input type="hidden" id="audit${projectReview.id}" value="0"/>
  735. <a href="${ctx}/workreview/workReviewStandard/reviewAudit?auditId=${projectReview.id}" onclick="return reviewAudits('确认要审核该质量复核内容吗?', this.href,'${projectReview.id}','#projectReviewList${index.index}_remarks')" style="color:#fff;" class="op-btn op-btn-edit">确认</a>
  736. </div>
  737. <div id = "check2${projectReview.id}" class="check-ok" style="display: none">
  738. <i class="fa fa-check"></i>
  739. </div>
  740. </c:otherwise>
  741. </c:choose>
  742. </td>
  743. </tr>
  744. </c:forEach>
  745. </tbody>
  746. </table>
  747. </div>
  748. </div>
  749. <div class="form-group layui-row page-end"></div>
  750. </form:form>
  751. </div>
  752. </div>
  753. </body>
  754. </html>